0

私はこれに関する多くの投稿を見てきましたが、私の特定の問題の解決策を見つけることができません。eclipseからjarをエクスポートする方法のパラメーターを確認しましたが、メインを含むクラスがメインクラスとしてチェックされていることを確認しました(このプロジェクトにはクラスが1つだけあります)。プログラムはEclipseで正常に実行されます。私はbatファイルを使用してそれを実行しようとしました。これは次のようになります(EDT2はjarの名前です)。

 java -jar EDT2.jar

マニフェストファイルを調べたところ、次のようになっています。

 Manifest-Version: 1.0
 Sealed: true
 Main-Class: EDTCompiler2

ファイルのメインは次のとおりです。

    public static void main(String[] args) throws IOException, InvalidFormatException {

エラーとコマンドラインの呼び出しを以下に示します。

http://s16.postimage.org/droox00sl/Untitled.png ここに画像の説明を入力してください

私が見るもう1つの珍しいことは、外部ライブラリからのオブジェクト宣言型である53行目にエラーが発生することです。私はこのプログラムで優れているためにapachePOIを使用しています。

4

2 に答える 2

1

メイン クラスは完全修飾名である必要があります。

つまり、EDTCompiler2が にあるpackage org.apache.whatever;場合、JAR ファイルで の を指定する必要がありMain-Classますorg.apache.whatever.EDTCompiler2

于 2012-06-19T18:21:05.173 に答える
0

Edwin の診断は正しいです。メイン クラスの静的イニシャライザで、ロードに失敗する別のクラスをロードしています。これにより NoSuchMethodError がスローされ、メイン クラスが読み込まれなくなります。したがって、最後にエラーメッセージが表示されます。欠落しているメソッドは、プログラムを Eclipse で実行するときとコマンドラインで実行するときに、異なるバージョンの Apache POI ライブラリを使用していることを示しています。

これを修正するには、次の 2 つのオプションがあります。

  1. Eclipse から JAR をエクスポートするときは、「必要なライブラリを生成された JAR に抽出する」というオプションをオンにします。これはデフォルトで選択されているはずですが、現在は機能していないようです。
  2. 依存ライブラリを JAR にパッケージ化するのではなく、-cp オプションを使用して Java を呼び出すときにクラスパスに追加します。このオプションでは、正しいバージョンのライブラリを追加していることを確認する必要があります。
于 2012-06-19T18:48:24.363 に答える