1

Mac で jar ファイルを実行しようとしています (他のプラットフォームではまだ試していません)。java -jar MyApp.jar を使用して実行すると、次のエラーが表示されます

スタックトレース:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at tabalchi.MyLogger.getLogger(MyLogger.java:51)
at tabalchiApp.TabalchiApp.printSystemProps(TabalchiApp.java:117)
at tabalchiApp.TabalchiApp.main(TabalchiApp.java:37)

ご覧のとおり、メイン クラスが認識されます。これがマニフェスト ファイルです。--->

Manifest-Version: 1.0
Class-Path: . jars/log4j-1.2.16.jar jars/jfugue-4.1.0-20120125.jar jars/gervill.jar jars/AppleJavaExtensions.jar  
Main-Class: tabalchiApp.TabalchiApp
SplashScreen-Image: tabalchiApp/resources/splash.png

<--- また、jar ファイル内のフォルダ構成は次のとおりです。--->

META-INF/MANIFEST.MF
jars/AppleJavaExtensions.jar
jars/gervill.jar
jars/jfugue-4.1.0-20120125.jar
jars/log4j-1.2.16.jar
tabalchiApp/TabalchiApp.class   <-- this is the main class
tabalchiApp/otherClasses.....class

<---

.jar ファイルの実行に関する多くの投稿を読みましたが、どの解決策もうまくいきませんでした。これについてあなたの助けを本当に感謝します.

Eclipseからエクスポートしてjarファイルを作成しています。実行可能な jar ファイルにエクスポートすると、マニフェスト ファイルの作成を制御できなくなります。マニフェスト ファイルにスプラッシュ イメージを追加する必要があります。また、実行可能な jar のエクスポートに関して、他にもいくつかの問題があります。したがって、このパス。

4

3 に答える 3

4

行方不明のようです。クラスパスにlog4j期待しています。jars/log4j-1.2.16.jar

jars/log4j-1.2.16 

フォルダー構造の下にある必要があります。

 jars/log4j-1.2.16.jar
于 2012-06-18T07:49:22.123 に答える
0

どのディレクトリで使用しようとしていますか:java -jar MyApp.jar

クラスパスでパッケージ/ディレクトリを指定して、それらが確実に見つかるようにすることができます。

于 2012-06-18T07:52:15.413 に答える
0

わかりましたので、このリンクによると、

http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html

Class-Path ヘッダーは、JAR ファイル内の JAR ファイルやインターネット プロトコル経由でアクセス可能なクラスではなく、ローカル ネットワーク上のクラスまたは JAR ファイルを指します。JAR ファイル内の JAR ファイル内のクラスをクラス パスにロードするには、それらのクラスをロードするカスタム コードを記述する必要があります。たとえば、MyJar.jar に MyUtils.jar という別の JAR ファイルが含まれている場合、MyJar.jar のマニフェストの Class-Path ヘッダーを使用して MyUtils.jar のクラスをクラス パスにロードすることはできません。

そのため、jar ファイルに他の jar ファイルを含めることはできないようです。

于 2012-06-19T16:57:43.373 に答える