5

私は最近、自分のマシンで他のユーザーに実行してもらいたい Java アプリケーションをいくつか開発しました。私はいくつかの調査を行い、Java コードを配布するには .jar ファイルを作成する必要があることを知りました。私はそうしましたが、それらのファイルを配布すると、一部のコンピューターで実行されますが、他のコンピューターでは「メインクラスが見つかりませんでした」というエラーが返されます。

  1. JRE のバージョンに問題はありますか。
  2. ユーザーは、どのバージョンでアプリケーションを実行する必要があるかをどのように知ることができますか。
  3. app/jar ファイルに正しいバージョンの jre をパッケージ化できますか? どうやって??
  4. jar ファイルは、コンパイルされている場合を除き、他のバージョンの jre と互換性がありません。
4

3 に答える 3

2

オプション 1: 以下のエントリでマニフェスト ファイルを作成し、jar に含めます。

     Main-Class: MainProgram

オプション 2:Mainプログラムの実行中にクラス名を指定するだけです。たとえば、jar名前がmyprogram.jar主クラスであるMainProgram場合は、以下のようにプログラムを実行します。

        java -cp myprogram.jar MainProgram

いくつかの引数を取る場合MainProgram、それらはコマンドラインでもそれらを渡します。

       java -cp myprogram.jar MainProgram argument1 argument2
于 2012-11-08T21:00:56.583 に答える
0
  1. ポイント4を除いて、これは問題ではありません。
  2. 最低限必要なバージョンを伝える必要があります。
  3. 可能ですが、おそらくインストーラーを作成する必要があり、jar よりもさらに複雑です。
  4. 一般的にはい、ユーザーが少なくともコンパイルしたバージョンの VM を持っている場合。jar 内にパッケージ化するクラス ファイルは、特定のバージョンの JRE を対象としており、その形式は時々変更されます。JRE の上位バージョンは下位バージョンのクラス ファイルをサポートします。

エラー メッセージは、JRE がメイン クラスを見つけられないことを示しています。コメントから、マニフェストを正しく指定していないようです。jar 内の META-INF ディレクトリ内に含まれていますか? 何jar -tf my_jar.jarを教えてくれますか?

JRE のバージョンが気になる場合は、javac コマンドでより低いターゲット バージョンを指定してみてください。これを行う-target xxには、javac呼び出しに-source xx. javac -helpフラグの説明については、 を参照してください。

于 2012-11-08T21:13:47.703 に答える
0

一部の SDK (Eclipse など) には、jar ファイルを作成する機能があります。コンソールで作業する場合、安定した jar ファイルを作成するのに役立つ可能性があります。

「jar cfm クラス名.jar MANIFEST.MF クラス名.class」

于 2012-11-08T21:12:23.230 に答える