2016-07-06 4 views
0

ForkJoinPoolクラスを使用するプログラムを作成しました。このクラスは、JDK 7のrt.jarライブラリとJDK 6のjsr166.jarライブラリにあります。jsr166.jarライブラリを使用したエラー:java.lang.UnsupportedClassVersionError

私は、JDK 7を持っていますが、プログラムは唯一のNetBeansでコンパイルするときに使用するソース/バイナリフォーマットはJDK 6でJDK 6

ているコンピュータ上で使用可能にしたいコンピュータ上のNetBeansでプログラムをコンパイルしています。私はもともとJDK 7のライブラリrt.jarを使ってプログラムをコンパイルしましたが、JDK 6コンピュータでプログラムを実行したときにエラーが発生しました:

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

https://www.javacodegeeks.com/2011/02/java-forkjoin-parallel-programming.html#comment-86433の指示に従ってください。

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

java -Xbootclasspath/p:lib/jsr166.jar -jar code.jar [email protected] 

は、しかし、これはエラーを生成します。私はjsr166.jarダウンロードして、正しいディレクトリとファイル名を指定して実行時ライブラリにjsr166.jar入れた

は、コマンドラインを使用しようとしました

53.0は、ウィキペディアによると、に言及したバージョンが9

のAtomicIntegerはtehのForkJoinPool.javaクラス内から呼び出されるJDKのバージョンです。

import java.util.concurrent.atomic.AtomicInteger; 

誰でも私にこれを実行する方法のアドバイスを提供できますか?

はどうもありがとうございまし

+0

おそらく、システムには複数のバージョンのJavaがあります。バージョンを確認するコマンドラインからコンパイルしてみてください。 – 11thdimension

+0

私は複数のバージョンがあります。私は自分のコンピュータ上にjdk1.7.0_51を持っていて、netbeansプロジェクトが使うディレクトリにはいくつかの.jarライブラリを持っています。私はこれらのライブラリを両方使用しています。私はjdk1.7.0_51のクラスを使用していますが、これらのクラスはjava/util/concurrent/files以外のnetbeansでJDK 6形式でコンパイルしても問題ありません。だから、私はjdk1.7.0_51からクラスにアクセスし続け、JDK 6フォーマットでコンパイルしている間もこれらの新しいクラスを使い続ける方法を見つけようとしています。これは可能ですか? – James

答えて

1

問題は、ファイルjsr166.jarということである - また同時実行JSR-166として知られている - あなたはJDK 9. ForkJoinPoolでコンパイルされた使用していることは、これの一部であり、 APIを使用し、JDK 6で使用する場合は、JDK 6向けにコンパイルされたこのAPIのバージョンをダウンロードする必要があります。

このAPIの作成者はDough Leaです。彼のページ:http://gee.cs.oswego.edu/dl/concurrency-interest/

完了した手順を繰り返し、今度は新しいjsr166.jarをJDK 6用にコンパイルして、古いjsr166.jarをプロジェクトから削除します。

関連する問題