2011-01-18 2 views
0

とjarファイルを作成し、私はこのエラーを取得しておいてください。は、私は私が作ったjarファイルを実行しようとしています複数のクラスの依存関係

 java -jar Client.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: Client (wrong name: Client/Client) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:616) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 

私は

jar cmf Client.mf Client.jar Client.class Client.java Client 

どこClient.mfこのコマンドを使用次のとおりです。

Manifest-Version: 1.0 
    Main-Class: Client 

最後の引数は、すべてのdepencyクラスを含むフォルダです。

ButtonListen.class 
ButtonListener.class 
Client$1.class 
Client$2.class 
Client$3.class 
NewPage.class 
NewPage.java 
NextPage.class 
NextPage.java 
OptIPDemo$1.class 
OptIPDemo$2.class 
OptIPDemo$3.class 
OptIPDemo$4.class 
OptIPDemo$5.class 
OptIPDemo$Doc$1.class 
OptIPDemo$Doc.class 
OptIPDemo.class 
OptIPDemo.java 
ServerStats.class 
ServerStats.java 
blue2.jpeg 
blue3.JPG 

私はNoClassDefFoundErrorを与えていますが、理由や解決方法はわかりません。

答えて

1

あなたはどちらか-d

javac -d classes 

でコンパイルする必要があります...またはパッケージ - を使用するようにマニフェストを調整し、その後、クラス/ Clientディレクトリに

mkdir classes/Client 
mv *.class classes/Client 

をすべてあなたのクラスを移動修飾されたメインクラス:

最後に、クラスがクライアント内に配置されるようにjarを構築しますjarのディレクトリ:

cd classes 
jar cmf ../Client.mf ../Client.jar * 
2

Client.classが存在しないようです。 そして、コードを整理するためにパッケージを使用する習慣があります。

+0

これらはすべてクライアントパッケージに含まれています。 Client.class、Client.mf、およびClient.javaは、Clientより上のディレクトリにあります。 – Jim

+0

クライアント$ 1.class、クライアント$ 2.classおよびクライアント$ 3.classはクライアントの内部クラスであるため、クライアントクラスもパッケージ内にあります。クライアントXORこれら3つのクラスファイルは外部にあります。クライアントディレクトリ –

+0

パッケージクライアントでクラスをコンパイルした場合、 JARファイル内の/ Client内にある必要があります。 Main-Class:Client.Clientを使用して、メインメソッドを含むクラスを指定します。 –

関連する問題