2016-03-28 8 views
1

私は解決のためにGoogleとStackOverflowを精査しており、これまでのところ見つからなかった。私は、Java 1.8を使用してWindowsのコマンドラインからマニフェストファイルを使用して、単純な実行可能な.jarパッケージを生成しようとしています。関連するファイルは、次のとおりです。実行ファイルのマニフェストファイルでjar.exeを使用する - 「メインマニフェスト属性なし」

Turtlephilia.java:

public class Turtlephilia { 
    public static void main(String[] args) { 
     System.out.println("i lurrrve turtles"); 
    } 
} 

MANIFEST.MF:

Main-Class: Turtlephilia 

do.bat:

javac Turtlephilia.java 

jar cvmf manifest.mf Turtlephilia.jar Turtlephilia.class 

java -jar Turtlephilia.jar 

それがコンパイルdo.bat私が実行した場合アーカイブは正常に終了しますが、jarファイルを実行すると、次のエラーが生成されます。

no main manifest attribute, in Turtlephilia.jar 

注:私は実際に成功し、このコマンドを使用してそれを実行することができる午前:

java -cp Turtlephilia.jar Turtlephilia 

しかし、私はそれが実行可能なjarファイルにする必要があります。

私は間違っていますか?どれくらい難しいのですか?

+0

メモ帳を使用してmanifest.mfを作成したことはありますか?目に見えない[バイトオーダーマーク](https://en.wikipedia.org/wiki/Byte_order_mark)(BOM)文字が冒頭にあると思われます。これは、技術的には 'Main-Class'で始まらないことを意味します。解決方法: 'Main-Class'の上に空白行を追加してください。 – VGR

+0

メモ帳で編集しましたが、空白行を追加しても同じ問題が発生します。ちなみに、私が気づいているのは、NetBeansに.jarをドラッグして見てみると、META-INF \ MANIFEST.msの下のパッケージに、Manifest-Version:1.0、Created-By:のデフォルトマニフェストがあるということです。 。、私のメインクラスラインなし。私のマニフェストファイルを無視しているだけですか? –

+0

ああ男。あなたは正しい軌道に乗っていた。 Main-Classはマニフェストファイルの最後の行で、後に改行が必要でした。 –

答えて

1

私はその理由を見つけました。

私はメモ帳でmanifest.mfファイルを作成していましたが、Main-Classには1行しかありませんでした。

これを認識するには、この行の後にキャリッジリターンが必要であることが分かります。最後に空白行。

私は数時間にわたって壁に頭をぶつけていましたが、私はJava開発環境に夢中ではありません。

+0

メモ帳はソースコードエディタではありません。メモ帳を使用してJavaを非難することは、 'wget'を使ってウェブを閲覧することと、使用しにくいためにStackOverflowを非難することのようです。 – dimo414

+0

私は同意しません。末尾のスペースの有無を扱うことができないことは非常に悪く、コンパイルに失敗したときに有用な警告を生成することができません。とにかく、IDEは通常、テキストファイルに末尾のスペースを追加しますか?私はそうではないと思います、なぜ彼らはどう違うでしょうか? –

+0

一般的に私はあなたに同意します。プログラムは正常に失敗するはずです。しかし、その優雅さには限界があります。あなたは、プログラムが[ガベージ入力](https://en.wikiquote.org/wiki/Charles_Babbage#Passages_from_the_Life_of_a_Philosopher_.281864.29)に直面して、常に合理的に行動するとは期待できません。あなたの前提は合理的ですが間違っています。テキストファイル[新しい行で終了することが予想されます](http://unix.stackexchange.com/q/18743/19157)([背景](http://stackoverflow.com/q/729692/113632))、ファイルの最後に新しい行を追加しなかったメモ帳は、その部分の動作が悪いです。 – dimo414

関連する問題