我们有一个使用javaws的Java web应用程序。它可以在Java 8更新40下正常运行,但是在Java 8更新51下,jp2launcher.exe只是停止运行,而不启动应用程序。Java Web Start应用程序在jre8u40下运行,但不是jre8u51
我在C:\ Users \ me \ AppData \ LocalLow \ Sun \ Java \ Deployment \ log中找到了日志,但它们在j8u40和j8u51之间是完全相同的(当然除了装入jars命令,jre版本和发布时间)。
我已经使用进程监视器记录了这两个jre版本的启动。在j8u51下,jp2launcher.exe仅以结果“SUCCESS”退出。比较两个procmon日志,我不能挑出任何不寻常的东西。他们都搜索了C:\ Users \ me \ AppData \ LocalLow \ Sun \ Java \ Deployment目录以及它们各自的C:\ Program Files \ Java \ jre1.8.0_XX \ lib目录等等,但是只有j8u51退出。
Windows事件日志不显示任何Java相关的东西。
有没有其他地方可以查找诊断信息?有什么可能会出错的建议吗?
更新:我已经成功运行了带有set "JAVAWS_VM_ARGS=-Xcheck:jni -XX:-TraceClassLoadingPreorder -XX:+PrintCommandLineFlags -verbose:jni -verbose:class -verbose:gc -XX:+PrintGCDetails -Djava.util.logging.config.file=C:\misc\logging.properties"
的jnlp并记录了stdout/stderr。它看起来像javaws和jp2launcher登录到输出,然后jre8u40和jre8u51版本终止。据推测,在j8u40版本中,它启动另一个jp2launcher.exe来运行该应用程序。
比较两个输出日志没有任何意义。这些类以几乎相同的顺序加载,大部分是相同的类,除了一些差异之外,这些差异只是使用更新的类才能解释。
进一步更新:我已经能够使用java.exe直接启动应用程序,通过从服务器安装获取客户端文件并将它们解压缩。该应用程序本身在jre8u51下运行得很好,所以问题肯定在于javaws本身。
update3:清除缓存并不能解决问题。这个问题发生在不同的机器上,即使是全新的Java安装。
update4:作为一个实验,我刚刚在Ubuntu Linux下尝试过。我们的产品在技术上不支持Linux,但我认为我会尝试。碰巧,行为是相同的!在jre8u40下应用程序启动,并且在jre8u51下它不会!
5:事实证明问题也发生在u45下,这是在u40之后立即更新。所以,这个原因似乎是在u45而不是u51中改变的。
也许它是jnlp文件中的内存大小。尝试一下。 –
没有运气。堆最大值设置为1024mb;设置初始堆并没有帮助,也没有删除所有堆参数并使用默认值,也没有设置最大值为32mb。设置为8mb导致内存不足错误,所以至少它是尊重这些设置... – Len
如果您将show console设置为java设置并双击jnlp文件,您将无法获得控制台输出? –