私は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の出力は、testpackdirecotoryにあります。
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.jarHello.javajava-classpath。\testpack.jarHello
これは私が得るエラーです:
スレッド「メイン」の例外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(不明なソース)で メインクラスが見つかりませんでした:こんにちは。プログラムは終了します。
私はこれが起こる理由はありません。どうすれば修正できますか?
javaこんにちは
スレッド「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と現在のパスを追加する必要があります。クラスパスに。