我可以使.jar文件与旧版本的java兼容吗

我可以使.jar文件与旧版本的java兼容吗,java,jar,versions,Java,Jar,Versions,我得到了这个错误: 由于我的Java版本。我希望使.jar文件与旧版本的Java以及新版本兼容。我的电脑不是问题,但我的观众使用的是旧版本的Java。我怎样才能使我的程序与旧版本和新版本兼容?我应该如何使用它?您可以返回并编译源代码,然后使用与特定版本的java兼容的旧javac生成一个新的jar文件。使用旧编译器编译您的jar,或者设置java目标为您的客户端支持的版本 要设置版本,请遵循以下线程:UnsupportedClassVersionError与JAR无关(JAR只是一个zip存档

我得到了这个错误:


由于我的Java版本。我希望使.jar文件与旧版本的Java以及新版本兼容。我的电脑不是问题,但我的观众使用的是旧版本的Java。我怎样才能使我的程序与旧版本和新版本兼容?我应该如何使用它?

您可以返回并编译源代码,然后使用与特定版本的java兼容的旧javac生成一个新的jar文件。

使用旧编译器编译您的jar,或者设置java目标为您的客户端支持的版本


要设置版本,请遵循以下线程:

UnsupportedClassVersionError
与JAR无关(JAR只是一个zip存档),而是JAR中的类

.class
文件只是编译的Java源代码,其格式称为字节码,JVM(Java虚拟机)使用字节码在底层平台上执行操作。字节码的格式每隔一段时间就会改变一次(Java已经出现),因此硬编码成编译类格式的版本号通常在JRE版本之间改变

tl;医生: 您需要做的是获取源代码并根据所需的JRE重新编译。没有办法只告诉类文件更改或与旧版本兼容。存档的JRE版本是可用的,但您必须注册帐户才能下载最新版本以外的版本

编辑

我没有注意版本号。您的
.class
文件是,您正在运行JRE7

确保代码与较旧的主要java版本真正兼容的唯一方法是在该版本的JDK下编译。虽然可以针对较旧的JVM版本进行编译,但如果使用较新的JDK进行编译,则永远无法确保不使用较旧JRE中不存在的方法/类


为了确保您的代码在使用较新的JRE时能够正常运行,您需要使用较新的JRE对其进行测试。没有办法解决这个问题,虽然较新的JRE保留了很好的向后兼容性,但有些细微的差异可能会使代码出错。

为此,您可以使用NetBeans IDE

运行>>设置项目配置>>自定义>> 在左侧面板中,选择“源”。
最后,选择源代码/二进制格式的最低JDK版本。

他的版本可能会出现相反的重复。我想说的是关闭,但没有雪茄。那么,你有没有找到一种方法来重新编译/转换一个jar,而不需要从源代码中重新编译它?你好。你能告诉我这个答案有什么问题吗?当Java是向前兼容的,特别是当源代码已经用旧的javac编译时,他为什么要回去用旧的javac编译?你的答案没有道理。请注意,如果你更改编译器的
源代码
目标代码
,那么你还必须从相应版本的Java中获取类库的副本,并设置
引导类路径
,否则,即使您生成的字节码与Java7JVM兼容,它仍可能调用仅存在于Java8中的方法。我通常发现,首先使用正确的Java目标版本进行编译比较容易。