使用jsr166.jar库时出错:java.lang.UnsupportedClassVersionError

时间:2016-07-06 17:29:43

标签: java netbeans jar

我编写了一个使用ForkJoinPool类的程序,该类可以在JDK 7的rt.jar库和JDK 6的jsr166.jar库中找到。

我在具有JDK 7的计算机上编译netbeans中的程序,但希望该程序可以在只有JDK 6的计算机上使用。

使用netbeans编译时使用的源/二进制格式是JDK 6.我最初使用库rt.jar(来自JDK 7)编译程序但是当我最初在JDK 6计算机上运行程序时,我看到了错误:

java.lang.SecurityException: Prohibited package name: java.util.concurrent

按照本网站https://www.javacodegeeks.com/2011/02/java-forkjoin-parallel-programming.html#comment-86433上的说明进行操作。

我下载了jsr166.jar,并且将jsr166.jar放入正确的目录并且运行时库尝试使用命令行:

java -Xbootclasspath/p:lib/jsr166.jar -jar code.jar $@

然而,这会产生错误:

java.lang.UnsupportedClassVersionError: java/util/concurrent/atomic/AtomicInteger : Unsupported major.minor version 53.0

根据维基百科的说法,版本53.0提到的是JDK版本9。

从ForkJoinPool.java类中调用AtomicInteger。

import java.util.concurrent.atomic.AtomicInteger;

有人可以就如何运行这个提供建议吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

问题是您正在使用的文件 jsr166.jar - 也称为并发JSR-166 - 是使用JDK 9编译的.DolkJoinPool是这个API,并且您希望将它与JDK 6一起使用,您需要下载为JDK 6编译的此API的一个版本。

此API的创建者是Dough Lea,您可以从他的页面找到正确的版本:http://gee.cs.oswego.edu/dl/concurrency-interest/

重复您已完成的步骤,现在使用为JDK 6编译的 new jsr166.jar ,并从项目中删除旧jsr166.jar