我是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)
任何线索? 感谢
答案 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