2012-02-10 23 views
2

さて、私は実行可能なjarファイルを作成しようとしています。それはコマンド "java -jar bybys.jar"で実行されますが、入力して実行しようとすると、「メインクラスbardejov.Imageが見つかりませんでした。プログラムが終了します。」というエラーが表示されます。ここでメインクラスが見つかりません

はマニフェストです:

Manifest-Version: 1.0 
Created-By: 1.7.0_02 (Oracle Corporation) 
Main-Class: bardejov.Image 

(はい私は、新しい行を使用)私は、ディレクトリとすべての可能な組み合わせを試してみましたjarファイルをコンパイルする場合、問題がどこにあるか、私は知らない

。私が使用 - C:\Java\2D>jar cfm bybys.jar Manifest.txt bardejov/Image.class bardejov/Board.class bardejov/*jpg

ディレクトリは次のとおりです。

META-INF/ 
META-INF/MANIFEST.MF 
bardejov/Image.class 
bardejov/Board.class 
bardejov/siknius.jpg 

そしてメインクラス:

package bardejov; 

import javax.swing.JFrame; 


public class Image extends JFrame { 

public Image() { 

    add(new Board()); 

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setSize(477, 530); 
    setLocationRelativeTo(null); 
    setTitle("Siknius"); 
    setVisible(true); 
    setResizable(false); 
} 

public static void main(String[] args) { 
    new Image(); 
} 
} 

どのように修正するには?

UPDATE

私はそれを修正しました。問題は、私は最新のJREをインストールしていないことでした。

+0

JAVA_HOME環境変数とPATH環境変数が正しく設定されていることを確認しましたか?私が「;」を含めないとこのエラーが出ます。私のJAVA_HOME変数に、コンパイラが現在のディレクトリをコンパイルして必要なファイルをコンパイルしているかどうかを知ることができます。 – mledbetter

+0

??? jarファイル(1)を実行すると、JAVA_HOMEは必要ありません.JDKツールのどれも何にでも使用されません。 (2)コンパイラを伴わない。 –

+1

'java -cp bybys.jar bardejov.Image'を実行すると作業はできますか? –

答えて

3

Manifest.txtのクラス名の後に余分なスペース文字があります。これは、エラーメッセージによって示唆されています

Could not find the main class bardejov.Image . 
              ^^ 
+0

であるかもしれませんが、私はマニフェストの抜粋(テキストを強調表示します)のスペースを見ていますが、私はそれを見る前に見ません。エラーメッセージに表示されます。 – oers

+0

これは可能性があります –

+0

OPは、コピーして貼り付ける代わりに、エラーメッセージを入力したと思われます。 'cmd.exe'からのコピーは簡単ではありません。 – Joni

-3

オープンCMDプロンプトと同様、PATH環境変数にこれらの変数を含めるようにしてください

set JAVA_HOME=c:\PATH\TO\JAVA_DIRECTORY 
set CLASSPATH=.;%JAVA_HOME%\bin;%JAVA_HOME%\lib 

を入力します。

Win7では、コントロールパネル - >システム - >高度なシステム設定 - >詳細設定タブ - >環境変数に移動して環境変数を取得できます。

+0

* CLASSPATHについてのひどい*アドバイス;最良の設定は、まったく設定しないことです。 –

+0

私は違います。 CLASSPATHに "bin"や "lib"を含めることは決して適切ではありません - それは、暗闇の中で激しく揺れ動くときに初心者がやることです。そして、CLASSPATHを全く持たないデフォルトは、それが "。"のようになります。だからこれは何も追加しない。さらに、Javaが彼の道にあることは明らかです。あるいは、彼は彼が持っているポイントに到達することができません。 –

+0

はい、ここの私たちの一部は、実際にはJava初心者です。お互いを助け合うことで学ぶのは良い方法です。一度は間違いがあります。私はあなたに私を教育する時間をとっていただきありがとうございます。ご多幸を祈る。 – mledbetter

1

問題は、実際には、jarにディレクトリbardejovのエントリが含まれていないことが原因です。ディレクトリにはのファイルのエントリのみが含まれています。これはあなたのリスティングで見ることができます。どのようにbardejovのエントリがあるかを見てください。あなたはjarファイルを作成するとき、あなたはそれでちょうどファイル、ディレクトリを含めるようにjarをしませ伝える必要があります。Java 6からも

jar cfm bybys.jar Manifest.txt bardejov 
+0

ちょうどそれをして、私はまだエラーが発生します。 Jarの内容: META-INF/ META-INF/MANIFEST。MF バルデヨフ/ バルデヨフ/ Board.class バルデヨフ/ Board.java バルデヨフ/ Image.class バルデヨフ/ Image.java バルデヨフ/ siknius.jpg – Reus

+0

それはあなたが持っていたことが可能です* *この問題との両方のスペースアフタークラス名の問題。 manifest.mfテンプレートファイルを編集してスペースがないことを確認しましたか? –

+0

MANIFEST.MFには2つの新しい行がありますが、それは問題ですか? – Reus

0

あなたはjarコマンドでエントリポイントを指定することができます。あなたは、カスタムマニフェストを作成し、追加する必要はありません

jar cfe bybys.jar bardejov.Image bardejov/Image.class bardejov/Board.class bardejov/*jpg 

次のコマンドは、アプリケーションの実行可能なjarファイルを作成する必要があります。

リソース

更新

私のマシン上で次の作品:

example/Hello.javaでJavaソースファイルを作成します。

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

コマンドと実行コマンドとコマンド

jar cfe example.jar example.Hello example/*.class 

javac example/Hello.java 

ジャーをコンパイル

java -jar example.jar 

出力

Hello world! 
であります

アップデート2

は、今では設定の問題のように見えます。コードとjarは明らかに正しいです。

クイックフィックス/ workaroudの場合:jarを直接起動する代わりに、java -jar ...コマンドを実行する短いバッチまたはシェルスクリプトファイルを作成します。

+0

試してみましたが、それでも私にエラーが表示されます – Reus

+1

*今度はあなたのクラスファイルを見てみましょう。 jarコマンドを単純なHelloWorldアプリケーションで再コンパイルおよび/またはテストします。 –

+0

単純なスイングhelloworldコードを試してみましたが、すべてエラーでも同じです。 – Reus

関連する問題