2017-07-06 17 views
-1

私は以下のプロジェクトを持っています構造: "com.github.liketechnik"というパッケージがあります。私の主なクラスはこのパッケージ( "com.github.liketechnik.Build")のBuildです。JARファイル - メインクラスが見つかりません

コンパイルされたクラスを正しいマニフェストを持つjarファイルに入れます。 g。バージョン属性とメインクラスエントリ "com.github.liketechnik.Build"を含んでいます。 jarファイル内のクラスは "com/github/liketechnik/Build.class"の下にあります。

java -jar output.jarを実行すると、「エラー:Mainclass com.github.liketechnik.Buildが見つかりませんでした」(ドイツ語から翻訳されました)が直接失敗します。クラスを直接java -cp build/main com.github.liketechnik.Build(例えば、クラスファイルを直接、ジャーの外に)を介して直接実行する場合、プロンプトなしで動作する。

私はこの時間を試してみても、すべての単一ファイルのタイプミスを検索しました。この問題に関する他のスレッドはすべて私の助けにはならなかったので、これ以上情報やソースコードが必要な場合は、これを与えることに問題はありません。

EDIT: jarファイルの構造を追加しました。

  • 1 DIR "META-INF" 挙げエントリと "MANIFEST.MF" を含む:

    JARファイルには、以下の構造を有します。

  • すぎて1つのディレクトリ構造 "COM/githubの/ liketechnik/Build.class"(例えば、サブパッケージ内の他のクラスを(含まれている)

マニフェスト:。

Manifest-Version: 1.0 
Main-Class: com.github.liketechnik.Build 

ビルド。 Javaの:手動で実行している

package com.github.liketechnik; 

public class Build { 

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

出力:Hi(期待通り) jarから実行すると出力:Fehler: Hauptklasse com.github.liketechnik.Build konnte nicht gefunden oder geladen werden(なぜ?)

+0

JARファイルの構造はどのように見えますか?任意のZIPツールで開くことができます。 –

+0

私の答えは、strucutreを示す編集。私もこのファイルをチェックしました、それは私も正しいようです。 – liketechnik

+0

ファイルの内容(マニフェストなど)を記述する代わりに、**コピーと貼り付けで直接表示**するだけです。必ずしも全体を貼り付ける必要はありませんが、関連する部分を表示することは英語の説明だけよりもはるかに役立ちます。 –

答えて

0

[OK]を.jarアーカイブをプログラムで作成するように思えるほど簡単ではないようです。 1つの処理が必要な.zip仕様(see this question)の下にあるように見えるので、ディレクトリhierachyの後ろにエントリを追加する必要があります。

: はあなたがディレクトリ abb含むファイル test.class toll.classがあると、あなたは最初 ba、その後、 bし、ファイルを追加する必要があります。それ以外の場合は動作しません。

関連する問題