2

jar ツールで jar を作成しようとしています。次のコマンドを使用して

jar.exe cmfv manifest.txt lol.jar Main.class

これにより、次のマニフェストを含む jar が生成されます。

Manifest-Version: 1.0
Created-By: 1.7.0_03 (Oracle Corporation)
Main-Class: Main

コマンドラインからjarを実行すると(java -jar lol.jar)、正常に動作します。しかし、フォルダー内の jar をダブルクリックすると、「メイン クラスが見つかりませんでした: Main.Program が終了します」というエラーが表示されます。

何が原因でしょうか?


いくつかのことを試した後、マニフェストは現在次のようになります。

Manifest-Version: 1.0
Class-Path: .
Created-By: 1.7.0_03 (Oracle Corporation)
Main-Class: code.Main

Main クラスには、パッケージ宣言が追加されています。jar 内に「コード」フォルダー/パッケージが追加されます。それでも同じエラーがあります。

4

3 に答える 3

1

Main クラスをパッケージに入れ、それに応じてマニフェストを調整する必要があります。それで問題は解決するはずです

于 2012-05-31T17:59:06.993 に答える
0

.jar 拡張子とのファイルの関連付けは何ですか?

jar ファイルをダブルクリックすると、javaw コマンドで jar が実行されます。

javawでデフォルトで実行されるjarファイルを作ってみてください。

これも見てください:http://www.wikihow.com/Run-a-.Jar-Java-File

于 2012-05-31T18:41:19.473 に答える
0

Main クラスをクラスパスに配置する必要があります。コマンドラインから実行すると、現在のディレクトリがクラスパスに自動的に追加されます。これが、そこから機能する理由です。ダブルクリックすると、クラスパスのようにjarへのパスを指定していません。マニフェストのクラスパスにクラスを追加する方法があります。以下は私の瓶の例です。lib は jar 内のフォルダーで、com/sample/CommandLineClient.class はメイン クラスです。

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.5.0_12-b04 (Sun Microsystems Inc.)
Class-Path: lib/args4j-2.0.19.jar lib/axis.jar lib/axis-ant.jar lib/commons-discovery-0.2.jar lib/commons-logging-1.0.4.jar lib/jaxrpc.jar lib/log4j-1.2.8.jar lib/saaj.jar lib/wsdl4j-1.5.1.jar
Main-Class: com.sample.CommandLineClientSysIn
于 2012-05-31T18:10:50.527 に答える