0

プログラムを実行可能な jar としてエクスポートし、必要なライブラリ (Apache POI) をパックしようとしています。.jar が作成されますが、機能しません。これらのライブラリを使用して展開する際の問題はありますか? プログラム自体が日食からうまく動作するためです。

4

2 に答える 2

2

以下の戦略があります。

  1. jar を作成します。選択したディレクトリに配置します。アプリケーションのすべての依存関係をそこに置きます。javaコマンドラインがハードコードされているか生成されているスクリプト(プラットフォームに応じてシェルスクリプト、バッチファイルなど)を作成します。行にはクラスパスを含める必要があります。 java -cp myapp.jar;poi.jar com.company.MyMain
  2. 実際に実行可能な jar、つまり のようなコマンドを使用して実行できる jar を作成しますjava -jar myapp.jar。アプリケーションに依存関係がある場合、この jar にはMANIFEEST.MF、プロパティを使用してクラス パスを定義するファイルが必要です。Class-Path
  3. すべてのクラスとすべての依存関係を 1 つの大きな jar ファイルにパックします。

明らかに、これらの操作はすべて、自作のスクリプトまたは利用可能なビルド ツールのいずれかによって自動化する必要があります。

于 2013-03-14T18:47:56.020 に答える
2

この状況で自問するいくつかの質問:

  • プログラムはどこで失敗しますか? コンソールにエラーはありますか? java -jar myJAR.jarコンソール出力を表示できるように、コマンド ライン ( ) から実行していますか?
  • さて、読み取りファイルに対して NullPointerException が発生します。読み込まれたファイルは JAR 内にありますか、それともどこにありますか? プログラムは、読み取ったファイルの場所をどのように認識しますか?
  • JAR をパッケージ化する方法に本当に問題があるのでしょうか、それともコードがファイルを見つけて読み取る方法に問題があるのでしょうか? おそらく、コードは、JAR から実行したときに解決できない相対的な場所を想定しています。
于 2013-03-14T21:15:44.940 に答える