1

私の質問は:

メインクラスである test.java クラスがあります。JARファイルに存在するもう1つのクラス(非メインクラス)があります。ここで、JAR の外部に存在するメイン クラスから、JAR に存在するデモ クラスをコンパイルして実行したいと考えています。理由を説明してください。

public class test
{   
public static void main(String args[])
{
    demo d1 = new demo();
    demo d2 = new demo("message passed from main class");
}
} 

public class demo
{
demo()}
System.out.println("message in demo class");
}
demo(String str)
{
System.out.println(str);
}}
4

3 に答える 3

3

これを見てください:JARファイルでのプログラムのパッケージ化

メインクラスとJARファイルの両方の準備ができたら、クラスパス上のJARファイルを使用してメインクラスを実行するだけで、Javaがそれを検出します。demoクラスがにdemo.jarあり、メインクラスがtest(例のように)であると仮定します。

java -cp demo.jar test
于 2012-02-07T04:30:57.560 に答える
1

「アリを使う」というのが正しい答えだと思いますが、

javac test.java
javac demo.java
jar cf test.jar test.class demo.class
jar ufe test.jar test

その後、

java -jar test.jar

これを拡張して ant を使用しない場合は、ビルド システムをエラー時に停止させたいと思うでしょう。また、エラー時に 'javac' がゼロ以外を返さないことに気付くでしょう。stderr を一時ファイルにパイプし、そのファイルの grep のゼロ以外の戻り値に応じて終了します。たとえば、ant を使用できないオンデバイス ビルド スクリプトから:

cd src
for F in R.java Maze.java EmptyActivity.java; do
  javac -d ../build/classes $P/$F 2> ~/tmp/javac.out
  echo -en "\033[1m"; cat ~/tmp/javac.out; echo -en "\033[0m"
  grep error ~/tmp/javac.out && exit
done
cd ..
于 2012-02-07T05:16:22.993 に答える
0

単にいずれかを使用したい場合はclass in java、そのクラスが存在する必要があります。 これはclass-path 、プログラムを実行するときに、そのためにclass必要なすべてが常にclass path..で検索されるためです。 クラスパスを設定する方法はありません。このクラスパスを設定する方法を見てください
demo.jar

または、単に別のオプションを使用してjavaパラメーターを実行できます-cp

java -cp /your jar path/demo.jar test
于 2012-02-07T05:08:20.947 に答える