2016-09-29 15 views
0

IDEAビルド>アーティファクトのビルドでjarファイルを作成します。しかし、それを実行することはできませんjava -jar jarname.jar - Error: Could not find or load main class Hello。 MANIFEST.MFファイルは/ resources/META-INF /フォルダーにあります。jarファイルを実行できません:メインクラスを見つけられませんでした。Hello

public class Hello { 

    public static void main(String[] args) { 
     System.out.println("Hello World!"); 
    } 

} 

MANIFEST.MF:

Manifest-Version: 1.0 
Main-Class: Hello 

enter image description here


EDIT:追加されましたアーティファクト設定スクリーンショット

enter image description here

0そして、ここでランチャークラスです
+0

外部依存関係を追加しますか? – RaGe

+0

jarファイルを調べて、クラスファイルが含まれているかどうか確認してください。 IntelliJでアーティファクトビルドを構成するときは、クラス、src、またはその両方を含めるように指定する必要があります。 – Brion

+0

私の質問をよく読んでください。それはMANIFESTファイル –

答えて

1

enter image description here

あなたは、左のタブから「アーティファクト」を選択した構造を投影する行きます。新しい案件を追加します。ここでは、マニフェストを選択してメインクラスを選択していますが、左側には、それがジャーに追加する内容が示されています。右側には、利用可能なもの(未追加)が表示されます。しかし、私はまだ私の瓶に何も追加していないので、それはマニフェストと実際のコードのどれも追加しません。

jarにコンパイル出力を追加することを指定する必要があります。そうしないと、実際のクラスではなくマニフェストのみが追加されます。あなたはそれをダブルクリックするだけでそれを行うことができます。コンパイルされた出力の上にディレクトリを指定すると、srcも追加されます。

更新:マニフェストファイルには何が

enter image description here

enter image description here

+0

。しかし、apache ioライブラリを追加してテストを行い、.jarを起動すると、エラーが発生します: 'java.lang.NoClassDefFoundError:org/apache/commons/io/FileUtils at Hello.main(Hello。ライブラリを含めるという問題はあるが、それらを含める方法がわからないことを理解している –

+0

org.apache.commons.io.FileUtilsは標準ライブラリではないので、プログラムは依存関係を描画しています。緑の+アイコンの新しいアーティファクトがある場合は、空ではなく依存関係を使用して作成することを指定します。私はいくつかのスクリーンショットを使って答えを更新します。 – Brion

0

あなたのマニフェストファイルは、自動実行させたい場合、メインクラスが何であるかを明記する必要があります。

Main-Class: Hello

これ以外の場合は、jarを実行するときにコマンドラインで指定する必要があります。限りIntelliJでそれを行う方法については、私はそこにあなたを助けることはできません。 mainメソッドを持つクラスへの参照は、完全修飾の場所(package.classname)が、あなたのクラスは、デフォルトのパッケージを持っているので、その必要はないことを

java -cp hello.jar Hello

注意。

+0

'java -cp hello.jar Hello'で'エラー:メインクラスHelloを見つけられないかロードできませんでした ' –

+0

jarファイルがHello.classであることを確認する必要があります。 – loesak

関連する問題