如何链接与其他版本的java兼容的代码

时间:2017-08-24 19:32:10

标签: java jvm

我的现有服务器在Java 1.6上运行,我无法升级它。

我需要使用一些与Java 1.8兼容的第三方jar / api,当我编写一些代码来访问它的API时,eclipse抛出

  

Exception in thread "main" java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version

我现在怎么办?不确定这是否是重复的问题,如果是,请提供一些链接。

5 个答案:

答案 0 :(得分:2)

重点是:Java虚拟机向前兼容。

由" n + 1"生成的.class文件编译器无法在" n" JVM。 (除非你专门指示编译器为旧版本的java编译)

您的选择:

  • 看看你是否可以获得为Java 6编译的那个库的版本
  • 看看你是否可以在Java 8 JRE上运行你的应用程序(在较新的 JVM上运行java6类没有问题!)

选项1可能变得相当丑陋 - 因为该库可能依赖于Java6所没有的系统类。

答案 1 :(得分:1)

在同一个项目中使用多个Java版本甚至多个JVMs是不可能的

如果你确实需要这个API,那么你只有很少的选择,最好的选择是升级所有项目以使用Java 1.8

答案 2 :(得分:0)

不,你不能在运行java 1.6

的环境中使用java 1.8下编译的jar

答案 3 :(得分:0)

正如其他人所指出的那样,你不能这样做。但是,您可能能够找到要使用的旧版本的库,并且这些库可能支持您的特定Java版本。这可能意味着您将在软件中采用错误,但这只是软件随时间的演变。

答案 4 :(得分:0)

如果你必须使用这个第三方罐子, 那么你必须使用-target 1.6(目标java 1.6)编译第三方jar。 也许你会得到源代码并自己编译它,或者你可能会得到其他人(可能是供应商)来编译它。

所有其他选项包括:

  1. 将JVM升级到Java 8.
  2. 不要使用第三方罐子。编写或找到与java 6兼容的文件。