在java中配置classpath

时间:2012-12-25 02:23:29

标签: 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)

任何线索? 感谢

2 个答案:

答案 0 :(得分:2)

类路径的默认值是“。”,即当前目录。 classpath环境变量的值将覆盖此值。 如果使用-cp或-classpath选项发出java命令,它将覆盖缺省的“。”和类路径环境变量值。

下面是在类执行期间设置类路径的示例 C:> java -classpath“。” com.abc.example.SayHello

与编译精确路径的位置编译相反,运行类文件时,我们需要遵循包结构。

这是由于类加载器通过组合其包和类名来尝试解析类位置的方式。您必须位于程序包根目录位置并发出指定程序包结构的java命令。

C:> java com.abc.example.SayHello

您好!!

答案 1 :(得分:1)

首先,您需要编译java文件:

javac /folder/*.java

然后您可以使用main()函数运行一个类:

java -cp . folder.foobar