我正在学习java。我的示例目录如下:
./src
./src/yxy
./src/yxy/pack
./src/yxy/pack/testf
./src/yxy/pack/testf/Person.java
./Hello.java
./Hello.class./testpack
./testpack/yxy
./testpack/yxy/pack
./testpack/yxy/pack/testf
./testpack/yxy/pack/testf/Person.class
./testpack.jar
src 目录用作库。它提供了 Person 类。
src 的输出位于 testpack 目录中。
我根据 testpack 目录生成了一个 testpack.jar。
Hello.java 是主要的 java 文件。它使用 Person 类。
Person.java源代码如下:
package yxy.pack.testf;
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
Hello.java源代码如下:
import java.io.*; //IOException
import java.util.*; //Enumeration
import yxy.pack.testf.Person;
public class Hello{
public static void main(String[] args)throws IOException {
Person p=new Person("abc");
Class cls=Person.class;
ClassLoader clsLoader=cls.getClassLoader();
String clsFile=cls.getName();
System.out.println("end");
}
}
我使用下面的方法在当前目录下生成testpack.jar。
javac -verbose -d testpack src\yxy\pack\testf\Person.java
cd testpack
jar -cvf testpack.jar ./yxy
move testpack.jar ./../testpack.jar
cd ..
我使用以下方法来构建和运行应用程序:
javac -classpath .\testpack.jar Hello.java
java -classpath .\testpack.jar 你好
这是我得到的错误:
线程“主”java.lang.NoClassDefFoundError 中的异常:你好 引起:java.lang.ClassNotFoundException:你好 在 java.net.URLClassLoader$1.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(未知来源) 在 java.lang.ClassLoader.loadClass(未知来源) 在 sun.misc.Launcher$AppClassLoader.loadClass(未知来源) 在 java.lang.ClassLoader.loadClass(未知来源) 找不到主类:你好。程序将会退出。
我不明白为什么会这样。我该如何解决?
你好
线程“main”中的异常 java.lang.NoClassDefFoundError: yxy/pack/testf/Person 在 Hello.main(Hello.java:10) 引起:java.lang.ClassNotFoundException:yxy.pack.testf.Person 在 java.net.URLClassLoader$1.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(未知来源) 在 java.lang.ClassLoader.loadClass(未知来源) 在 sun.misc.Launcher$AppClassLoader.loadClass(未知来源) 在 java.lang.ClassLoader.loadClass(未知来源) ... 1 更多
我怎样才能解决这个问题?
=== 无论如何,我找到了解决方法。只需在cmd中使用以下内容。
>java -classpath testpack.jar;. Hello
我必须添加 testpack.jar 和 current path 。到类路径。