1

我的问题是:

我有一个 test.java 类,它是主类。JAR 文件中还有一个类(非主类)。现在我想从 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”在出错时不会返回非零值。将其标准错误传送到一个临时文件,然后根据 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 回答