私はこのようなJARファイルを作成しました:
jar cf Predit.jar *.*
このJARファイルをダブルクリックして実行しました(うまくいきませんでした)。だから私はこのようにDOSプロンプトから実行しました:
Java -jar Predit.jar
「メインクラスのロードに失敗しました」という例外が発生しました。それで、私はこのJARファイルを解凍しました:
jar -xf Predit.jar
そして私はクラスファイルを実行しました:
Java Predit
それはうまくいった。 JARファイルが機能しなかった理由がわかりません。 JARファイルを実行する手順を教えてください
JarファイルのマニフェストにMain-Classを指定する必要があります。
Oracleの チュートリアル には完全なデモンストレーションが含まれていますが、これもゼロからの別のものです。 2つのファイルが必要です。
Test.Java:
public class Test
{
public static void main(String[] args)
{
System.out.println("Hello world");
}
}
manifest.mf:
Manifest-version: 1.0
Main-Class: Test
テキストファイルは改行またはキャリッジリターンで終わる必要があります。最後の行が改行またはキャリッジリターンで終わっていない場合、最後の行は正しく解析されません。
次に実行します。
javac Test.Java
jar cfm test.jar manifest.mf Test.class
Java -jar test.jar
出力:
Hello world
Java -classpath Predit.jar your.package.name.MainClass
Jarチェックを実行する前に、Main-Class: classname
がMANIFEST.MFファイルにあるかどうかを確認します。 MANIFEST.MFがjarファイル内にあります。
Java -jar filename.jar
マニフェストをjarに追加する必要があります。これは、Javaランタイムにメインクラスが何であるかを伝えます。以下の内容でファイル 'Manifest.mf'を作成します。
Manifest-Version: 1.0
Main-Class: your.programs.MainClass
'your.programs.MainClass'を実際のメインクラスに変更してください。ファイルをJarファイルの 'META-INF'という名前のサブフォルダに配置します。あなたはそのために任意のZipユーティリティを使用することができます。
.class、.jarファイルを作成するための非常に簡単な方法。
Jarファイルを実行します。マニフェストファイルについてあまり心配する必要はありません。シンプルでエレガントにしましょう。
JavaサンプルHello Worldプログラム
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
クラスファイルのコンパイル
javac HelloWorld.Java
jarファイルを作成する
jar cvfe HelloWorld.jar HelloWorld HelloWorld.class
または
jar cvfe HelloWorld.jar HelloWorld *.class
jarファイルを実行する
Java -jar HelloWorld.jar
または
Java -cp HelloWorld.jar HelloWorld
Jarファイルを実行するためだけにマニフェストを作成したくない場合は、jarファイルを実行するときにコマンドラインから直接メインクラスを参照できます。
Java -jar Predit.jar -classpath your.package.name.Test
これはjarファイルで実行するメインクラスを設定します。
Java
class Hello{
public static void main(String [] args){
System.out.println("Hello Shahid");
}
}
manifest.mf
Manifest-version: 1.0
Main-Class: Hello
コマンドラインで:
$ jar cfm HelloMss.jar manifest.mf Hello.class
$ Java -jar HelloMss.jar
出力:
Hello Shahid
Eclipse Runnable JARファイル
Javaプロジェクトを作成する - RunnableJAR
メインクラス
public class RunnableMainClass {
public static void main(String[] args) throws InterruptedException {
System.out.println("Name : "+args[0]);
System.out.println(" ID : "+args[1]);
}
}
Run Jar ファイルをJavaプログラム( cmd )を使用して引数を指定し、出力を取得してEclipseコンソールに表示します。
public class RunJar {
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
String jarfile = "D:\\JarLocation\\myRunnable.jar";
String name = "Yash";
String id = "777";
try { // jarname arguments has to be saperated by spaces
Process process = Runtime.getRuntime().exec("cmd.exe start /C Java -jar "+jarfile+" "+name+" "+id);
//.exec("cmd.exe /C start dir Java -jar "+jarfile+" "+name+" "+id+" dir");
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream ()));
String line = null;
while ((line = br.readLine()) != null){
sb.append(line).append("\n");
}
System.out.println("Console OUTPUT : \n"+sb.toString());
process.destroy();
}catch (Exception e){
System.err.println(e.getMessage());
}
}
}
Eclipseで ショートカット : を見つける
ヘルプ►ヘルプ目次►Java開発ユーザーガイド►参照►メニューとアクション
これらの詳細に対処したくない場合は、EclipseまたはNetBeansのエクスポートjarアシスタントも使用できます。
私はこのフォルダ構造を持っています:
D:\ JavaProjects\OlivePressApp\com\lynda\olivepress\Main.class D:\ JavaProjects\OlivePressApp\com\lynda\olivepress\press\OlivePress.class D:\ JavaProjects\OlivePressApp\com\lynda\olivepress\olives \カラマタ.class D:\ JavaProjects\OlivePressApp\com\lynda\olivepress\olives\Ligurian.class D:\ JavaProjects\OlivePressApp\com\lynda\olivepress\olives\Olive.class
Main.class
はパッケージcom.lynda.olivepress
にあります
他に2つのパッケージがあります。
com.lynda.olivepress.press
com.lynda.olivepress.olive
1)1行目がメインクラス、2行目が空の2行の"Manifest.txt"
という名前のファイルを作成します。
Main-Class: com.lynda.olivepress.Main
D:\ JavaProjects\OlivePressApp\Manifest.txt
2)マニフェストとメインクラスのエントリポイントを使用してJARを作成する
D:\ JavaProjects\OlivePressApp> jar cfm OlivePressApp.jar Manifest.txt com/lynda/olivepress/Main.class com/lynda/olivepress/*
3)JARを実行する
Java -jar OlivePressApp.jar
注:com/lynda/olivepress/*
は、1)の前に、上記の他の2つのパッケージを含めることを意味します。