2012-12-25 168 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