您好我正在尝试使用我自己代码中的外部Java包并继续获取NoClassDefFoundError
,即使我使用的是与我编译的相同的类路径。
为了你的娱乐,我已经包含了一个简单的复制品,这对于我来说无疑是一个愚蠢的错误(到目前为止我已经在这里工作了大约6个小时)
/* WTF/WTF.java */
import foo.Bar;
class WTF
{
public static void main(String[] args)
{
Bar dontCare = new Bar();
}
}
/* WTF/foo/Bar.java */
package foo;
class Bar
{
public Bar() {}
}
现在从WTF目录中运行以下命令:
javac foo/Bar.java [ok] javac WTF.java [ok] java WTF [ok] jar cf foo.jar foo [ok]
我删除了WTF / foo目录,因此只有WTF / foo.jar可用。
javac WTF.java -cp foo.jar [ok] java WTF -cp foo.jar [$!@#$!]
Exception in thread "main" java.lang.NoClassDefFoundError: foo/Bar at WTF.main(WTF.java:7) Caused by: java.lang.ClassNotFoundException: foo.Bar at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
任何线索都非常感谢!
答案 0 :(得分:1)
错误的参数序列?尝试:
java -cp foo.jar WTF
答案 1 :(得分:1)
WTF.class
所在的目录应该在类路径中。
此外,Bar
应该是公开的。
java -cp foo.jar:. WTF
:
是Linux中的路径分隔符,如果您使用的是Windows,请将其替换为;
。