java - 使用新版本运行时 (8.x) 的旧版本 Java.exe (7.1) 的含义

标签 java incompatibility

我们的应用程序嵌入了 JRE。该应用程序错误地附带了一个混搭程序(java.exe 的 7.x 版本和 JRE 其余部分的 8.x 版本)。

我可以使用 Process Explorer 确认运行 v.1.7 java.exe 的进程使用 v.1.8 java 运行时。我很惊讶运行时或二进制文件没有检测到异常并放弃 JVM 创建!

相同的含义是什么?安全问题 ?稳定性问题?我还没有查看 java.exe 的源代码。从我对 java.exe 二进制文件的初步调查中,我可以看出它不仅仅是一个 stub 。除了 USER32.dll、ADVAPI32.dll、COMCTL32.dll 之外,它还调用了 100 个不同的 KERNEL32.DLL API。

当然,我们可以(而且我们会)修复错误。但是对使用上述异常的几个当前生产系统有影响吗?如果是,它们是什么?

最佳答案

What are the implications of the same ? Security issues ? Stability issues ?

所有这些。

JVM 二进制文件(在你的例子中是 java.exe)、它附带的共享对象/DLL 以及实现 Java 方面的 JAR 文件都放在一个组合包中,这个包既不是设计的也不是故意的作为组合包运行。

Java 7 和 Java 8 之间的兼容性问题的具体列表是整个 JVM 包的一致版本之间的已知外部问题。

您已将不连贯 Java 安装的内部不兼容性添加到那些已知的外部不兼容性中。无法获得这些列表。几乎可以肯定,甚至没有人会尝试跟踪此类事情。

您不知道什么应该起作用,什么会起作用,也不知道它能起作用多长时间,即使它确实看起来起作用。

关于java - 使用新版本运行时 (8.x) 的旧版本 Java.exe (7.1) 的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37829959/

相关文章:

java - 将带有 "?"参数的字符串格式化为 java 中的完整字符串的方法?

Java - 从两个 ArrayLists/Array 中查找重复项的优化方法

flutter - 为 flutter web 应用程序禁用 crashlytics 并为 flutter 移动应用程序启用

java - 如何修复 java.lang.UnsupportedClassVersionError : Unsupported major. 次要版本

java - Gephi:需要 Java,找不到 Java 1.8 或更高版本

javascript - Raphael 未运行回调参数

c++ - 字段 'class' 有一个不兼容的 'class'

java - 在 BlueJ 中添加库

java - 如何以函数式方式生成具有复杂条件的对象?

java - Spring没有从systemd服务中看到环境变量