所以这个错误很奇怪。。。
我正在使用EXE4J 6为我的JavaFX应用程序构建一个.exe文件。这在Java版本13.0.1中没有出现任何问题。我最近将我的环境升级为使用Java 14.0.1,现在每当我尝试通过exe运行我的应用程序时,我都会得到以下堆栈跟踪:
java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.InternalError: platform encoding not initialized
at java.base/java.net.Inet6AddressImpl.getLocalHostName(Native Method)
at java.base/java.net.InetAddress.getLocalHost(Unknown Source)
at org.apache.logging.log4j.core.util.NetUtils.getLocalHostname(NetUtils.java:54)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:612)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:691)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:708)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:263)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:243)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:174)
at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:669)
尝试初始化我的Log4J日志记录时会发生此错误。但是,如果我直接打电话给
InetAddress.getLocalHost()
我可以从.exe中复制此错误。直接在Eclipse(EE 06/2020)中运行我的应用程序效果很好。在做了一些调试之后。我确定从PATH中删除Java可以让应用程序运行。我的.ex4j配置文件是这样设置的,即应用程序应该寻找一个单独的Java 14 jre,而不是尝试将我的PATH用于Java。
<searchSequence>
<directory location="../java/jre64" />
</searchSequence>
jre64是通过ANT使用我拥有的14.0.1 jdk构建的,并且只导入我需要的模块。同样,在我升级到14.0.1之前,这一切都在13.0.1中运行
从其他计算机上的研究和测试来看,我认为这归结为我计算机上的环境问题。然而,我找不到地方了。任何想法或想法都将不胜感激。具体来说,为什么EXE4J会尝试在我的路径上使用Java,而不是在搜索序列中使用Java。
其他注意事项:
-
在Windows 10最新更新上运行
-
路径指向OpenJDK 14.0.1(导致中断)(java-cmd中的版本正确)
-
我已经确认,在从我的Path中删除java后,工作exe仍然通过jre64在14.0.1版本上运行
-
应用程序是用构建的,Eclipse Workspace/项目JRE也指向相同的OpenJDK 14.0.1
-
在具有类似版本的其他计算机上运行;环境工作与;不会导致这个问题。