我在编译/构建期间使用了launch4j将可执行jar包装到我的pom.xml(maven项目文件)文件中的exe文件中。
但是可以从一段java代码运行launch4J并在执行java应用程序时动态创建一个exe包装器,如:
import some.l4j.dependencies.*;
public class L4JTest {
public static void main(String[] args) {
Launch4JConfig l4jConfig = new Launch4JConfig ();
l4jConfig.setJarPath("path-to-jar-to-wrap");
l4jConfig.setOutfile("test.exe")
l4jConfig.setDontWrapJar(true);
...
l4jConfig.create();
}
}
欢迎提供示例的任何指针或链接!
答案 0 :(得分:3)
由于你不想彻底Runtime.getRuntime().exec(..)
方式,你将不得不修补。我们使用了launch4J,我们从未遇到过您正在寻找的用例。我认为launch4J没有文档化的Java API。
但是,您可能会修改launch4J中使用的Ant任务,并在此处将其用于您的目的。 看看task's source
您会看到它使用net.sf.launch4j.Builder
和net.sf.launch4j.config.Config
来“构建”EXE。