プログラムを実行可能な jar としてエクスポートし、必要なライブラリ (Apache POI) をパックしようとしています。.jar が作成されますが、機能しません。これらのライブラリを使用して展開する際の問題はありますか? プログラム自体が日食からうまく動作するためです。
1013 次
2 に答える
2
以下の戦略があります。
- jar を作成します。選択したディレクトリに配置します。アプリケーションのすべての依存関係をそこに置きます。
java
コマンドラインがハードコードされているか生成されているスクリプト(プラットフォームに応じてシェルスクリプト、バッチファイルなど)を作成します。行にはクラスパスを含める必要があります。java -cp myapp.jar;poi.jar com.company.MyMain
- 実際に実行可能な jar、つまり のようなコマンドを使用して実行できる jar を作成します
java -jar myapp.jar
。アプリケーションに依存関係がある場合、この jar にはMANIFEEST.MF
、プロパティを使用してクラス パスを定義するファイルが必要です。Class-Path
- すべてのクラスとすべての依存関係を 1 つの大きな jar ファイルにパックします。
明らかに、これらの操作はすべて、自作のスクリプトまたは利用可能なビルド ツールのいずれかによって自動化する必要があります。
于 2013-03-14T18:47:56.020 に答える
2
この状況で自問するいくつかの質問:
- プログラムはどこで失敗しますか? コンソールにエラーはありますか?
java -jar myJAR.jar
コンソール出力を表示できるように、コマンド ライン ( ) から実行していますか? - さて、読み取りファイルに対して NullPointerException が発生します。読み込まれたファイルは JAR 内にありますか、それともどこにありますか? プログラムは、読み取ったファイルの場所をどのように認識しますか?
- JAR をパッケージ化する方法に本当に問題があるのでしょうか、それともコードがファイルを見つけて読み取る方法に問題があるのでしょうか? おそらく、コードは、JAR から実行したときに解決できない相対的な場所を想定しています。
于 2013-03-14T21:15:44.940 に答える