0

私は、既存のJavaプログラム(もちろん自分で作成しませんでした)が既存のjarでどのようにコンパイルされたかを理解しようとしています

私はTest.java(元のソースファイル)を持っています:

package Demo;
//import classes from jars here etc...
public class Test {
 public static void main(String args[]) {
  etc...
 }
}

これで、他に 2 つの jar ができました。

file1.jar
file2.jar
Demo.jar

それを実行するためのバッチ スクリプトがあります。

@echo off
set CLASSPATH="file1.jar";"file2.jar";"Demo.jar"
java -cp %CLASSPATH% Demo.Test

これは機能しますが、ソース ファイル Test.java を変更し、再コンパイルして、jar クラスの依存関係を使用して実行する必要があります。(意味が通じなかったらごめんなさい)


今、私はこれを再コンパイルして同じ結果を再現しようとしましたが、うまくいきませんでした:

javac -cp file1.jar;file2.jar;Demo.jar Test.java

定義されたマニフェスト:

manifest.mf
Main-class: Demo.Test

クラスファイル用のディレクトリ「store」を作成し、そこにクラスファイルを移動しました

ラン:

jar -cmf manifest.mf Demo.jar store

「Demo.jar」を作成したのは

次に、上記のバッチ スクリプトを実行しましたが、同じ結果にはなりませんでした (まったく機能しません)。

どんな助けでも大歓迎です。ありがとうございました!

4

1 に答える 1

0

外部 jar に依存するとすぐに、真の実行可能 jar を作成することは困難です。

ここでの唯一の解決策は次のとおりです。

マニフェストは次のようになります。

manifest.mf
Main-class: Demo.Test
Class-Path: file1.jar file2.jar
于 2013-03-25T21:17:05.117 に答える