0

我试图弄清楚现有的 Java 程序(我当然不是我自己)是如何用现有的 jar 编译的

我有Test.java(原始源文件):

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

现在我有另外两个罐子:

file1.jar
file2.jar
Demo.jar

有一个批处理脚本可以运行它:

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

这可行,但现在我需要更改源文件 Test.java,重新编译并使用 jars 类依赖项运行。(对不起,如果我没有意义)


现在,我试图重新编译它以重现相同的结果,但没有运气:

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

定义清单:

manifest.mf
Main-class: Demo.Test

为类文件创建目录“存储”并将类文件移到那里

冉:

jar -cmf manifest.mf Demo.jar store

哪个创建了“Demo.jar”

然后我运行上面的批处理脚本,但结果不一样(根本不起作用)

任何帮助,将不胜感激。谢谢!

4

1 回答 1

0

一旦依赖外部 jar,就很难创建真正的可执行 jar。

这里唯一的解决方案是:

  • 将所有 jars 放在同一个文件夹中:你的及其依赖项
  • 在清单中添加一个类路径条目
  • 使用启动 jarjava -jar Demo.jar

清单必须如下所示:

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