1

これで投稿を開始するのは嫌いですが、Java は初めてです...このチュートリアルに従って、ソケット サーバー (Eclipse の鉱山) を作成しました。Eclipse 内でサーバーを実行できます。すべて問題ありません。しかし、プロジェクトをエクスポートしようとすると、実行方法がわかりません。このエラーが発生し続けます(実行方法によって異なります)

Exception in thread "main" java.lang.NoClassDefFoundError: xsocketserver/Main
Caused by: java.lang.ClassNotFoundException: xsocketserver.Main
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:315)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398)

この問題は、設定されているクラスパスに関連していると読みました。私は次のことを試しました:

java -cp libs/xSocket-2.8.12.jar xsocketserver.Main
java -jar xSocketServer.jar    
java -classpath xSocketServer:xSocketServer/libs/xSocket-2.8.12.jar xsocketserver.Main

プラス他の多く。JAR 内のファイル構造は次のとおりです。

xSocketServer.jar
    -> xsocketserver
        -> Main.class
        -> xSocketDataHandler.class
    -> META-INF
        -> MANIFEST.MF
    -> libs
        -> xSocket-2.8.12.jar

ちなみに、を含む独自のマニフェストファイルを追加しようとしましたClass-Pathが、チェックすると常に次のようになります。

Manifest-Version: 1.0
Main-Class: xsocketserver.Main

Google で見たヒット数に基づいて、これはよくある問題だと思いますが、何が間違っているのかわかりません。エクスポート設定が間違っているのでしょうか??

4

2 に答える 2

1

jarファイルに別のjarを含めることができるとは思いません(xSocket-2.8.12.jarを含めたように)。xSocket が独自のコードである場合は、代わりに「外部」jar に直接含めてください。

http://www.velocityreviews.com/forums/t143595-jars-containing-jars.html および JAR 内の JAR を含むクラスパスを確認して ください。

そうでなければ、私には正しいように見えます。古い/古いバージョンの jar を実行しようとしていないことを確認してください。(jar を削除し、Eclipse が新しいものをエクスポートすることを確認してください。)

Eclipse から .jar ファイルをどのようにエクスポートしていますか? 生成された jar ファイルは通常、実行構成の 1 つに基づいています。Eclipseから動作するときに使用するものを必ず使用してください。

まだ試していない場合は、次の手順を試してください (以下のサイトにリストされています)。

http://forums.sun.com/thread.jspa?threadID=5358121

1-プロジェクトを右クリックし、エクスポート オプションを選択します。エクスポート ウィンドウがポップアップします。

2-ウィンドウのJavaオプションになるポップアップウィンドウからjarファイルオプションを選択します。

3-JarFileオプションをクリックすると、新しいウィンドウがポップアップします。

4-ur jar ファイルのエクスポート先を選択し、[次へ] をクリックします。

5-次の新しい画面をクリックした後、[次へ] ボタンをもう一度クリックします。

6-「メインクラス」というフィールド名を持つ新しい画面が表示されます。アプリケーションのメインクラスを参照します。メインクラスは、メインメソッドを持つものです。

7-今すぐ仕上げを選択します。

于 2010-04-27T12:28:02.100 に答える
0

私は同様の問題を抱えていましたが、あなたの問題は関連している場合と関連していない場合があります...

Jar マニフェスト ファイルは UTF-8 形式である必要があります。Windowsのメモ帳を使用していましたが、機能しませんでした。別のエディターでマニフェスト ファイルを再作成すると、正常に機能しました。

日食はUTF-8ファイルを作成すると思いますが、その形式でない場合に自動的に変換されるかどうかはわかりません

別のエディターを使用してマニフェストの最初のバージョンを作成した場合は、manifest.mf を削除して、Eclipse 内で再作成してみてください。

ジョン

于 2010-05-21T21:37:05.183 に答える