我有一个目录结构(在Windows下):C:\JavaProjects\bin\debug\
在JavaProjects中,我有这样的Test.java:
package debug;
public class Test{
public void debug(String arg){
System.out.println(arg);
}
}它是这样编译的
javac -d bin Test.java 在调试目录中,现在我有了Test.class。
然后创建另一个类(也是ConditionalCompilation.java in JavaProjects):
import debug.*;
public class ConditionalCompilation{
public static void main(String[] args){
Test a = new Test();
a.debug("Test");
}
} 然后,在JavaProjects中,我写了这样的话:
C:\JavaProjects>javac -classpath .\bin ConditionalCompilation.java没有错误发生。
现在我试试看:
C:\JavaProjects>java ConditionalCompilation得到这个:
Exception in thread "main" java.lang.NoClassDefFoundError: debug/Test
at ConditionalCompilation.main(ConditionalCompilation.java:5)
Caused by: java.lang.ClassNotFoundException: debug.Test
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more你能帮我理解一下我做错了什么吗?
发布于 2014-07-03 18:23:23
要运行的类及其依赖项位于两个不同的类路径上。Test类根植于bin中,而ConditionalCompilation类根植于父目录中。
一个解决方法是显式地指定依赖类路径。
java -classpath bin;. ConditionalCompilation另一个修复方法是编译到bin目录并从该目录运行。
javac -d .\bin -classpath .\bin ConditionalCompilation.java
cd bin
java ConditionalCompilationhttps://stackoverflow.com/questions/24560702
复制相似问题