据我了解,Java JRE是向后兼容的,如果您使用Java(JDK)7编写程序,它将与Java(JRE)8一起运行。
我有一些用Java 8开发的程序,并且有.jar和EXE文件,这些文件是我完成后生成的,它们始终可以正常运行。但是,在安装Java JDK 11(11.0.2)之后,这些旧的.jar文件会损坏...
我知道该类和其他一些Javax类已从JDK 11中删除,因此从开发角度看,如果没有Maven之类的工具,您将无法再使用它们。但是我不明白为什么安装JDK 11会对我的旧jar产生任何影响,因为我没有安装新的JRE,即使附带了新的JRE,它也应该向后兼容吗?
为此,我还使用了Apache NetBeans 10,它与Java 8兼容,但是在我安装JDK 11之后,NetBeans 10仍然可以运行,但是其加载窗口很大且模糊,IDE的图像也很模糊,所有文本更大。
那为什么安装JDK 11对较旧的程序有这些负面影响?
注意-我曾尝试将jars / EXE与JRE版本8(201)中的javaw.exe关联,但是它们仍然存在相同的问题。
答案 0 :(得分:2)
Java强烈尝试向后兼容,但有时为了发展生态系统,必须进行不向后兼容的更改。到目前为止,它们已作为大版本的一部分发布,例如Java 9、10、11。您最有可能受到Java 11的JEP 320: Remove the Java EE and CORBA Modules的影响。
请记住,Java 8已发布in 2014。五年来,Oracle和社区都为Java 8提供了补丁程序和安全修复程序,但永远无法提供这些补丁程序和安全修复程序。
答案 1 :(得分:1)
您面临的问题很可能不是兼容性问题。字节码。这只是一个缺课。
Java 11放弃了对某些旧技术的支持-例如Java Applets。如果您在Java 11 JDK / JRE中运行Java 8 Applet,则将因为Java 11不提供类/罐而获得ClassNotFound异常。
与JavaFX类似,它仍然存在,但不再是Java发行版的一部分。您必须将其添加为单独的Jar。
我相信可以将这些类添加到项目中。我个人希望看到一个端口。