2012-12-25 164 views
0

我是新來的Java ..在Java類路徑配置

我有一個例子結構如下:

/folder/foo.java /folder/bar.java /folder/foobar.java 

現在我試圖運行foobar.java,但我得到下面的異常

Exception in thread "main" java.lang.ClassNotFoundException: /folder/foobar 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:247) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:149) 

然後我試圖做

java -classpath . foobar 
Exception in thread "main" java.lang.NoClassDefFoundError: foobar 
Caused by: java.lang.ClassNotFoundException: foobar 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
配置它條

任何線索? 感謝

+3

看起來像你需要編譯foobar.java到foobar.class,通過像「javac foobar.java」 – mfrankli

回答

2

類路徑的默認值是,即當前目錄。 CLASSPATH環境變量的值將覆蓋該值。 如果java命令與-cp或-classpath選項發出的,它覆蓋默認的「」和CLASSPATH環境變量的值。

下面是 C級執行過程中設置一個類路徑的例子:「」> java的-classpath com.abc.example.SayHello

與編譯你需要給出確切路徑的地方相反,爲了運行類文件,我們需要遵循包結構。

這是由於類加載器試圖通過結合其包和類名來解析類的位置的方式。您必須對包根位置,併發出java命令指定的封裝結構。

C:> java的com.abc.example.SayHello

你好!

1

首先,你需要編譯java文件:

javac /folder/*.java 

然後你就可以用main()功能運行的類: ''

java -cp . folder.foobar