以未翻译语言安装时,Install4j 会生成带有 NoClassDefFoundError 的 error.log
我正在使用 install4j,它适用于我们已翻译的 10 种语言,但是如果用户尝试在使用另一种语言(例如俄语或爱沙尼亚语)的(Windows XP)计算机上安装,则会出现 error.log 文件在包含安装程序的目录中创建。安装完成后没有任何明显问题,并提供了运行语言的选择,但也会创建错误日志。
- 我做错了什么吗?或者我可以抑制错误吗?
- 这是在 install4j 的更高版本中修复的(我在更改日志中看不到任何提及,并且要求升级我们的构建机器的 install4j 并不简单)
- 是否已经存在一个开放的 install4j 错误?
- 我需要收集更多诊断信息吗?
有什么想法吗?
娱乐步骤:
- 控制面板->区域及语言设置->区域选项->标准与格式->爱沙尼亚
- 运行安装程序
- Error.log 然后包含:
java.lang.NoClassDefFoundError: sun.awt.AppContext$PostShutdownEventRunnable
at sun.awt.AppContext.stopEventDispatchThreads(AppContext.java:535)
at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:296)
at java.lang.Thread.run(Thread.java:736)
java.lang.NoClassDefFoundError: java.nio.charset.Charset$3
at java.nio.charset.Charset.probeExtendedProvider(Charset.java:397)
at java.nio.charset.Charset.lookupExtendedCharset(Charset.java:420)
at java.nio.charset.Charset.lookup2(Charset.java:454)
at java.nio.charset.Charset.lookup(Charset.java:440)
at java.nio.charset.Charset.isSupported(Charset.java:486)
at sun.nio.cs.StreamEncoder.forOutputStreamWriter(StreamEncoder.java:79)
at java.io.OutputStreamWriter.<init>(OutputStreamWriter.java:91)
at com.exe4j.runtime.util.WinDel.scheduleDeletion(Unknown Source)
at com.exe4j.runtime.WinLauncher$3.run(Unknown Source)
I'm using install4j and it works fine for the 10 languages we've got translations for, however if a user tries to install on a (windows XP) machine that's using another language eg Russian or Estonian, then an error.log file is created in the directory containing the installer. The installation completes without any apparent problems and gives a choice of language to run in but also creates the error log.
- Am I doing something wrong? Or can I suppress the error?
- Is this fixed in later versions of install4j (I couldn't see any mention in the change logs and it's non-trivial to ask for our build machine's install4j to be upgraded)
- Is there already an open install4j bug?
- Do I need to collect more diagnostics?
any ideas?
Recreation Steps:
- Control Panel-> Regional & language settings-> Regional Options-> Standards & Formats-> Estonian
- Run Installer
- Error.log then contains:
java.lang.NoClassDefFoundError: sun.awt.AppContext$PostShutdownEventRunnable
at sun.awt.AppContext.stopEventDispatchThreads(AppContext.java:535)
at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:296)
at java.lang.Thread.run(Thread.java:736)
java.lang.NoClassDefFoundError: java.nio.charset.Charset$3
at java.nio.charset.Charset.probeExtendedProvider(Charset.java:397)
at java.nio.charset.Charset.lookupExtendedCharset(Charset.java:420)
at java.nio.charset.Charset.lookup2(Charset.java:454)
at java.nio.charset.Charset.lookup(Charset.java:440)
at java.nio.charset.Charset.isSupported(Charset.java:486)
at sun.nio.cs.StreamEncoder.forOutputStreamWriter(StreamEncoder.java:79)
at java.io.OutputStreamWriter.<init>(OutputStreamWriter.java:91)
at com.exe4j.runtime.util.WinDel.scheduleDeletion(Unknown Source)
at com.exe4j.runtime.WinLauncher$3.run(Unknown Source)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
error.log 实际上不是来自安装程序进程,而是来自安装程序退出时启动的清理进程。清理过程将删除安装程序解压到的临时目录。由于此异常,该临时目录可能尚未被删除。安装的完整性未受到影响。
有趣的是,只有当编码“UTF-16LE”在 JRE 中不可用时才会发生此错误。但是,这是
The error.log is actually not from the installer process but from a cleanup process that is launched when the installer exits. The cleanup process deletes the temporary directory to which the installer has been extracted. Due to this exception, that temporary directory has probably not been deleted. The integrity of the installation has not been impacted.
Interestingly, this error can only happen if the encoding "UTF-16LE" is not available in the JRE. However, this is one of the basic encodings that have to be available. So it looks like there's a bug in the JRE that is triggered in this specific situation.