我们的应用程序嵌入了JRE。该应用程序错误地附带了一个mashup(7.x版本的java.exe和8.x版本的其余JRE)。
我可以确认运行v.1.7 java.exe的进程使用Process Explorer使用v.1.8 java运行时。我很惊讶运行时或二进制文件没有检测到异常并放弃了JVM的创建!
同样的含义是什么?安全问题 ?稳定性问题?我还没有浏览过java.exe的源代码。从我对java.exe二进制文件的初步调查,我可以看出它不仅仅是一个存根。除了USER32.dll,ADVAPI32.dll,COMCTL32.dll之外,它还调用了100种不同的KERNEL32.DLL API。
当然,我们可以(而且我们会)解决这个错误。但对于使用上述异常的几种当前生产系统是否有影响?如果是的话,他们是什么?
答案 0 :(得分:3)
同样的含义是什么?安全问题 ?稳定性 问题?
所有这些。
JVM二进制文件(在你的例子中是java.exe),它附带的共享对象/ DLL,以及实现Java方面的JAR文件都在一个组合的包中,这个包不是设计的,也不是除了组合包之外什么都不运行。
Java 7和Java 8之间的兼容性问题的特定列表是整个JVM包的一致版本之间已知的外部问题。
您已将不连贯 Java安装的内部不兼容性添加到已知的外部不兼容性中。没有办法得到那些清单。几乎可以肯定的是,甚至没有人试图跟踪这些事情。
你不知道什么应该起作用,什么起作用,也不知道它会起作用的时间,即使它出现也能起作用。
答案 1 :(得分:1)
java.exe
是a simple launcher。它不包含JVM或类库代码。它的主要功能是定位JRE并使用命令行中传递的参数加载jvm.dll
。
即使没有java.exe
,也可以使用Invocation API启动JVM。
java.c
log告诉JDK 7和JDK 8之间的启动器没有太大的变化。有一个启动器支持JavaFX应用程序和一些修复,以更好的参数验证。而已。因此,如果您的应用程序在JDK 7启动器中正常运行,那么显然没有什么可担心的。