0

我有一个奇怪的问题 - 我有一个 javafx 程序,我使用 maven 编译和打包(对于 Windows,我使用 Inno setup 创建一个安装包)。从 Java 8 升级到 Java 10(更新 pom.xml 文件中的插件并更新配置)后 - 我已经到了构建成功完成的地步。

问题是在 Windows 上安装软件包后 - 启动程序的 exe 文件将无法正常运行。它开始一瞬间然后停止。

奇怪的部分:如果我尝试从 target\bundle 文件夹(maven 为打包程序准备文件的文件夹)运行相同的 exe - 它运行良好!

这两个文件夹 - target\bundle 和 Programs files(x86)/vendor/appname 是相同的(文件和配置文件内容)。

我在 Programs files(x86)/vendor/appname 下检查了 exe 的权限,它们看起来很好。

我正在 Windows 8.1 机器上进行测试(在其他机器上显示相同的行为,这让我相信这是一个真正的问题,而不是我的测试机器的错误配置)。

相同的脚本用于为 MAC OSX 创建安装包,并且在 OSX 上一切正常,因此代码没有问题。

关于是什么原因以及如何解决它的任何想法?

附加信息 :

  1. 自从迁移到 Java 10 后,这种情况才开始发生。Java 8 和 9 可以完美运行。

  2. 我的应用程序不写入程序文件安装文件夹中的任何文件。配置和日志文件仅写入 %user%/AppData 文件夹。

4

1 回答 1

1

我通过使用 Inno 安装向导手动创建一个工作安装包然后将它与我没有的那个进行比较来发现问题。

完成此操作后,我比较了向导创建的唯一一个不起作用的 iss 文件(Inno 配置文件)。事实证明,充气城堡 jar 文件产生了问题。以前版本的 iss 脚本将它们复制到 lib/ext 文件夹,这为 java 类解析器创建了一个重复的类路径问题,因为有两个 jar 副本。

这在 Java 9 和 Java 10 中是不需要的。从 iss 文件中删除手动添加充气城堡罐解决了这个问题。

希望这对将来的某人有所帮助:)

于 2018-05-01T10:17:28.777 回答