将应用程序从Java 1.6降级到Java 1.5

时间:2012-11-08 11:16:05

标签: java java-6 java-5 downgrade

我有一个用Java编写的小应用程序,经过测试并在JRE_1.6上运行。现在我需要针对JRE_1.5运行它。我改变了我必须符合Java 1.5要求的源代码,并且项目编译得很好。

问题在于它使用了许多预编译库,如opencsv-2.3,并且这些库是使用Java 1.6编译的,因此调用它们的任何类会导致java.lang.UnsupportedClassVersionError。 其中大多数是com.apache libs + opencsv-2.3 + org.jdom

如何确定哪些库确实需要更换?如何替换需要它的库?

更新 如何替换部分实际上代表“如果没有旧库可以做什么?”有没有办法降级已编译的库,或者我是否需要在1.5上找到类似的解决方案并重写代码?

3 个答案:

答案 0 :(得分:5)

我建议您查看每个库的清单,以查找

这样的行
Bundle-RequiredExecutionEnvironment: J2SE-1.3
X-Compile-Target-JDK: 1.5
Build-Jdk: 1.5.0_22
Created-By: 1.6.0_21-b07 (Sun Microsystems Inc.)

如果没有其他选项出现,我只会接受创建。

唯一可以确定的方法是在库中示例一个类(假设所有类都是为同一版本构建的)

javap -v -classpath net\sf\trove4j\trove4j\3.0.2\trove4j-3.0.2.jar gnu/trove/list/TLongList | grep version

  minor version: 0
  major version: 49

版本表是

major  minor Java platform version 
45       3           1.0
45       3           1.1
46       0           1.2
47       0           1.3
48       0           1.4
49       0           1.5
50       0           1.6
51       0           1.7
52       0           1.8

有关详细信息http://en.wikipedia.org/wiki/Java_class_file

答案 1 :(得分:2)

作为@Peter Lawrey,例如opencvs:

opencvs-2.2

清单文件(MANIFEST.MF)位于jar内的文件夹META-INF中。

答案 2 :(得分:0)

我遇到了同样的问题,我刚用JDK 1.5在open-csv中重建了源文件 - 问题解决了!