0

Ubuntu 12.04 で Eclipse 3.7 を使用しています。

フォルダー内の特定の Eclipse プロジェクトに 5 つの .java ファイルがありsrcます。binプロジェクト フォルダーには、( 、libおよびsrcフォルダーを除いて)helpファイルと、properties特定の入力ファイルに加えてファイルがあります。

.jarJava ファイルを含むファイルを作成し、プロパティ ファイルをパラメーターとして使用して、コマンド ラインから実行可能にする必要があります。

例えば ​​:

java -jar <jar-file-name>.jar -info file.properties

Eclipse を使用して、プロジェクトを.jarファイルとしてbinフォルダーにエクスポートしました。

propertiesすべての入力ファイル、ファイル、およびhelpファイルをdistフォルダーにコピーし、コマンドを実行しました。

と言うエラーが出ました

Failed to load Main-Class manifest attribute from jar

次に、この回答を確認し、必要なことを行い(行でマニフェストファイルを作成しました)、実行しました

jar cfm <jar-file-name>.jar <manifest-file-name> ./bin/*.class

動作せず、 . がスローされましたClassNotFoundException

どんな助けでも大歓迎です。

編集

.jar のエクスポート中に「完了」ではなく「次へ」を選択して、メイン クラスを追加しました。実行中に、mysql コネクタ jar に対して「ClassNotFoundException」がスローされました。とはいえ、jar の作成中に追加された lib フォルダーに含まれています。

Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

2回目の編集

関連する出力。

java -cp ./lib/* -jar <non-runnable-jar>.jar -info info.properties

./lib/依存するすべてのjarがどこにありますか。

このエラーが発生しました:

Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at polygonprobability.Model.readTestingData(Model.java:178)
    at polygonprobability.Model.<init>(Model.java:136)
    at polygonprobability.Info.getModel(Main.java:290)
    at polygonprobability.Main.loadInfo(Main.java:138)
    at polygonprobability.Main.operInfo(Main.java:61)
    at polygonprobability.Main.distribute(Main.java:170)
    at polygonprobability.Main.parse(Main.java:81)
    at polygonprobability.Main.main(Main.java:34)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:188)
    at polygonprobability.DatabaseConnect.authorizeSQL(DatabaseConnect.java:50)
    at polygonprobability.Model.readTestingData(Model.java:157)
    ... 7 more

為に

java -cp /lib* -jar <non-runnable>.jar <packagename>.Main -info info.properties

このエラーが発生しました

Exception in thread "main" java.lang.NoClassDefFoundError: /lib64
Caused by: java.lang.ClassNotFoundException: .lib64
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: /lib64. Program will exit.
4

2 に答える 2

0

jar を実行するコマンド ラインは次のようになります。

java -jar myJar.jar your.package.ClasswithMainMethod

これがエラーである場合は、それらを含めてください。

私はあなたが特に望むかもしれないと信じています

java -jar myJar.jar your.package.ClasswithMainMethod args

そして、プログラムを実行するための最良の方法は、プロジェクトファイル内からdistフォルダーの1ステップ上にあるため、実際に実行することです

java -jar ./dist/myJar.jar your.package.ClasswithMainMethod args 

そうすれば、Eclipse を再ビルドするときに、dist フォルダーを削除できないと不平を言うことはありません。

最後に、何らかの理由で lib パスを移動した場合は、次のことを試してください。

java -cp /path/to/lib/*:myJar.jar your.package.ClasswithMainMethod args
于 2013-08-01T10:09:38.390 に答える