jar使用Launch4j和Inno Setup

时间:2018-04-10 12:39:38

标签: java javafx deployment inno-setup launch4j

我正在开发一个应该部署的大型JavaFX应用程序。我想用Launch4j包装.jar文件并使用Inno Setup创建一个安装程序。但是,我在这个过程中遇到了麻烦。

使用Launch4j时,它会吐出这些错误(请参阅1)。但是,尽管存在这些错误,但使用我创建的MWE来验证Launch4j是否正确包装了jar文件,一切正常。 MWE只是一个小型JavaFX应用程序,我使用Launch4j生成.exe文件并使用Inno Setup生成安装程序。我可以使用生成的安装程序安装此MWE而不会出现问题并运行应用程序。然而,如上所述,当我对我的大型应用程序采用这种完全相同的方法时,它确实具有更多的依赖关系,我无法在使用生成的安装程序后运行该应用程序。

我搜索了这方面的解决方案并使用Inno Setup找到了解决方法(参见ban-geoengineering'答案):

How do I bundle a JRE into an EXE for a Java Application? Launch4j says "runtime is missing or corrupted."

我按照上面提到的步骤操作,但在使用Launch4j生成jar包装并运行Inno Setup创建的生成的安装程序后仍无法运行应用程序。当我尝试运行应用程序时,根本没有任何反应。

应用程序信息和开发环境

该应用程序利用内部开发的定制java库,充当中介,通过自定义界面与设备的eSW进行通信。需要这些Java库和设备驱动程序才能与设备通信,并且需要随应用程序一起提供,如安装程序附带的那样。我在Windows 10企业版下使用IntelliJ IDEA 2018.1。 JDK是9.0.4版。

使用Launch4j和Inno Setup之前采取的步骤

我已按照此处提及的步骤https://www.jetbrains.com/help/idea/creating-and-running-your-first-java-application.html#package打包应用程序。我可以使用java [options] -jar nameOfJar通过命令行成功运行应用程序。应用程序需要某些VM选项才能与设备驱动程序通信,我怀疑在生成.exe文件和生成安装程序时存在问题。

添加1

我试图在Launch4j中添加自定义类路径。看起来Launch4j确实识别了主类所依赖的jar,因为它包含了所有正确的jar文件(参见3)。

我除此之外还试图模仿我用来通过命令行运行应用程序的JVM选项(参见4)。

执行应用程序时,它会吐出 NoClassDefFoundError ,并说这是由于 com / demant / gearbox / corona / model / GBCManager 。但是,这应该已经通过jar文件 com.demant.gearbox.corona.model.jar 包含在内,您可以在3中看到。

但是,正如您从34所看到的那样, NoClassDefFoundError 仍然会被抛出。

0 个答案:

没有答案