我有一个用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上找到类似的解决方案并重写代码?
答案 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
答案 1 :(得分:2)
答案 2 :(得分:0)
我遇到了同样的问题,我刚用JDK 1.5在open-csv中重建了源文件 - 问题解决了!