私は Notepad ++ を私のオールインワンツールの編集、実行、コンパイルなどとして使用しようとしています。
_ jre _ をインストールし、パス変数を.../binディレクトリに設定しました。
Notepad ++で "Hello world"を実行すると、このメッセージが表示されます。
Java.lang.UnsupportedClassVersionError: test_hello_world :
Unsupported major.minor version 51.0
at Java.lang.ClassLoader.defineClass1(Native Method)
at Java.lang.ClassLoader.defineClassCond(Unknown Source)
.........................................
私はここでの問題はバージョンに関するものだと思います。 Javaのバージョンによっては、古いものと新しいものがあります。
PATH
変数の違いは何ですか?表示されているバージョン番号は、クラスファイルと互換性のあるJREのバージョンを表しています。
報告されたメジャー番号は:
Java SE 13 = 57,
Java SE 12 = 56,
Java SE 11 = 55,
Java SE 10 = 54,
Java SE 9 = 53,
Java SE 8 = 52,
Java SE 7 = 51,
Java SE 6.0 = 50,
Java SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45
(出典: ウィキペディア )
実際の問題を解決するには、新しいバージョンのJava JREでJavaコードを実行するか、またはJavaコンパイラにtargetパラメータを指定して、コンパイラに以前のバージョンのJavaと互換性のあるコードを作成するように指示します。
たとえば、Java 1.4と互換性のあるクラスファイルを生成するには、次のコマンドラインを使用します。
javac -target 1.4 HelloWorld.Java
新しいバージョンのJavaコンパイラでは、ブートストラップクラスパスが設定されていないという警告が表示される可能性があります。このエラーに関するより多くの情報はブログ記事で利用可能ですbootclasspathなしで古いソースを設定するための新しいjavac警告。
Java.lang.UnsupportedClassVersionError
はコンパイル時にJDKが高く、実行時にJDKが低いために発生します。
Eclipseでは、メニューコマンド Window - > Preferences - > Java - > Compiler に行き、次に「Compiler Compliance level」を1.6に設定しました。
心配しないで、解決しました。
それは実際に簡単です - あなたは同じバージョンで両方のJRE/JDKをインストールする必要があります。
JRE 6 - > JDK 6
JRE 7 - > JDK 7
等々。
このエラーは、インストールしたバージョンよりも新しいバージョンのJavaでコンパイルされたJava「クラス」ファイルをロードしようとしていることを意味します。
たとえば、.class
ファイルがJDK 7用にコンパイルされている可能性があり、それをJDK 6で実行しようとしています。
したがって、解決策は次のいずれかです。
ソースがある場合は、ローカルのJavaコンパイラ(ある場合)を使用してクラスを再コンパイルします。
javac FileName.Java
開発者にとって、これは別の開発者が.classファイルをチェックインし、そしてあなたが持っているよりも新しいバージョンのJavaを持っている場合に起こります。
コードがコンパイルされたバージョンをサポートしないJavaバージョンでプログラムを実行しようとしています。 それで基本的にあなたはより高いバージョンであなたのコードをコンパイルしそしてより低いバージョンを使ってそれを実行しようとしなければならない。
あなたが着いているように
Unsupported major.minor version 51.0
51.0 は J2SE 7に対応 あなたはたぶんJava 7であなたのコードをコンパイルし、より低いバージョンを使ってそれを実行しようとしています。 Java -version
の表示内容を確認してください。それはJava 7バージョンであるはずです。そうでない場合は、PATH/Java_HOMEに適切な変更を加えます。または、コードを実行しようとしているのと同じバージョンでコンパイルすることもできます。設定がわかりにくい場合は、絶対パス/home/user/jdk1.7.0_11/bin/javac
と/home/user/jdk1.7.0_11/bin/Java
を常に指定できます。
私はMacでも同じような状況にあり、次のようなプロセスが私のために働いた。
端末で、次のように入力します。
vi ~/.profile
その後、この行をファイルに追加して保存します。
export Java_HOME=/Library/Java/JavaVirtualMachines/jdk<version>.jdk/Contents/Home
1.7.0_25
のようにversionはあなたのコンピュータ上のものです。
エディタを終了してから、次のコマンドを入力して有効にします。
source ~/.profile
次にJava -versionと入力して結果を確認します。
Java -version
.profile
ファイルとは何ですか?
.profileファイルは隠しファイルです。これはオプションのファイルで、プロファイルファイルを持つユーザーがログインしたときにどのコマンドを実行するかをシステムに指示します。ログイン手続き中に実行されます。
Eclipseのメニューで ウィンドウ - > 設定 - > Java - > コンパイラ "プロジェクト固有の設定"をチェックしてください。
それでも同じバージョンのJavaでエラーが発生する場合は、手動でプロジェクトのビルドフォルダを削除してみてください。その後、Eclipseを再起動してください。
最も一般的な問題は、Java_HOME
変数の設定ミスです。複数インストールした場合は、正しいJava Development Kitライブラリを指すようにしてください。
SDK Javaフォルダがどこにあるのかを調べるには、次のコマンドを実行します。
jrunscript -e 'Java.lang.System.out.println(Java.lang.System.getProperty("Java.home"));'
どのJava(openjdk)がインストールされているかを確認するには、次のようにして確認してください。
dpkg -l "openjdk*" | grep ^i
または
update-Java-alternatives -l
変更するには、次のようにします。
update-alternatives --config Java
必要ならばSudo
を前に付けます。
代替Javaバージョンを選択します。
または、インストール可能なものを確認してください。
apt-cache search ^openjdk
必要ならばSudo
を前に付けます。
その後、インストールすることができます、例えば:
apt-get install openjdk-7-jre
必要ならばSudo
を前に付けます。
以下から適切なパッケージをインストール/アップグレードしてください。
yum install Java-1.7.0-openjdk Java-1.7.0-openjdk-devel
Java-1.7.0-openjdk
パッケージには、Java Runtime Environmentだけが含まれています。 Javaプログラムを開発したい場合はJava-1.7.0-openjdk-devel
パッケージをインストールしてください。
FreeBSD Portsコレクションには openjdk7 というOpenJDK 7パッケージがあり、おそらく再設定が必要です。
OpenJDK Wikiページ を参照してください。
Oracleサイト から適切なJava SE Development Kitライブラリをインストールするか、またはインストールするだけです。
Jenkinsでこの問題が発生している場合は、以下を参照してください。
ただし、update-alternatives
を使用して適切なバージョンのJava(新しい)を選択しても問題ありません。
Java 7でコンパイルされたJARライブラリーをいくつか持つことができ、Java RuntimeとしてはJava 6しかありません。いくつかの新しいライブラリで起こる可能性があります。
私は自分のアプリケーションを構築するために Ant スクリプトを使って作業していたときに同じ問題に直面しました。
私はアプリケーション開発に Eclipse を使い、プロジェクトのビルドプロパティでコンパイラのバージョンを変更しました。しかし、それは私にはうまくいきませんでした。その後、Antスクリプトでコンパイラのバージョンを提供できることを知りました。
私はそれがJavaファイルをコンパイルするセクションでAntスクリプトを修正しました。
<target name="build-Java" depends="prepare-build">
<echo message="Compiling Java files"/>
<javac ....
target="1.5"...
</javac>
</target>
これは私にとってサポートされていない大きな問題を解決するのに役立ちました。
私は1.7で書かれたプロジェクトと同じ問題を抱えて1.6で実行しようとしました。
Eclipseでの私の解決策:
プロジェクトを右クリック [プロパティ] - > [Javaビルドパス] - > [ライブラリ]
JREシステムライブラリを選択し、右側の 編集 をクリックして、ターゲットJREを選択します。
左側の Java Compiler に行き、 Compilerの準拠レベル をターゲットに変更します。
それは私のために働いた。
_ jdk _ 1.7をインストールしたとき、問題は解決しました。
何人かの人々によって他のところで答えられたように、Javaプログラムはそれがそれのためにコンパイルされたものより古いバージョンのJavaで動かされています。下位互換性のために "クロスコンパイル"する必要があります。別の言い方をすると、ソースとターゲットのJavaバージョン間に不一致があります。
Eclipseのメニューのオプションを変更しても、元の投稿者は答えません。彼はEclipseを使用していないと述べています。 OpenJDK javacバージョン1.7では、コンパイル時にパラメータ-source
および-target
を使用し(さらに古いバージョンの) rt.jar - ファイルを指定すると、1.6用にクロスコンパイルできます。実際に1.6 JREをインストールする場合は、そのインストール(たとえば、Ubuntuの/usr/lib/jvm/Java-6-openjdk-i386/jre/lib/rt.jar、/ usr/jdk/jdk1)を指すことができます。 SunOS上の6.0_60/jre/lib/rt.jarどうやら申し訳ありませんが、Windowsシステム上のどこにあるかわかりません)。そのようです:
javac -source 1.6 -target 1.6 -bootclasspath /usr/lib/jvm/Java-6-openjdk-i386/jre/lib/rt.jar HelloWorld.Java
インターネットからrt.jarをダウンロードして、それを指すことができるように見えます。これはそれほどエレガントではありません。
javac -source 1.6 -target 1.6 -bootclasspath ./rt.jar HelloWorld.Java
これに基づいて...
J2SE 8 = 52
J2SE 7 = 51
J2SE 6.0 = 50
J2SE 5.0 = 49
JDK 1.4 = 48
JDK 1.3 = 47
JDK 1.2 = 46
JDK 1.1 = 45
Eclipseでは、パッケージエクスプローラーでプロジェクトを右クリックします。
ビルドパス - > ビルドパスの設定
下:
Javaビルドパス - > ライブラリ - > ライブラリの追加 - > JREシステムライブラリ - > インストール済みのJRE - > 検索 。
検索が完了したら、利用可能なリストからライブラリを選択して必要なJREを追加します。
Maven を使用中にこの問題に直面している場合は、プラグイン Maven Compiler を使用してコードをクロスコンパイルできます。
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
.....
更新:JDK 8を使用している場合は、source
およびtarget
を1.8
に設定します。
どうやって直すの?
このエラーは、クラスコードの実行に使用されているJREが、使用されているJavaのバージョンを認識していないことを意味します。通常、クラスファイルを生成した(つまりコンパイルした)Javaのバージョンが新しいためです。
それを直すには、
a)実行に使用されるのと同じ、または古いバージョンのJavaコンパイラでJavaソースをコンパイルします。すなわち適切なJDKをインストールしてください。
b)Javaソースを新しいバージョンのJavaコンパイラで、互換モードでコンパイルします。つまり、-target
パラメータを使用します。
c)コンパイルしたクラスを、クラスのコンパイルに使用したJDKと同じ、または新しいバージョンのJREで実行します。
現在使用しているバージョンは、 javac -version
(コンパイラ用)、およびJava -version
(ランタイム用)で確認できます。
JDKをインストールし、PATH変数をJREではなくJDK に設定する必要がありますか?
コンパイルのために、確かに、あなたが欲しい特定のJDKをインストールして設定する。
実行時には、JDKまたはスタンドアロンJREに付属しているものを使用できますが、それに関係なく、正しいバージョンをインストールしていることと、PATHを驚かないように設定していることを確認してください。
JREまたはJDKのPATH変数の違いは何ですか?
PATH環境変数は、入力したコマンドを探す場所をシェルに指示します。 Java
と入力すると、コマンドシェルインタプリタはPATH
変数で指定されたすべての場所を左から右に見て、実行する適切なJava
ランタイム実行可能ファイルを見つけます。 Javaの複数のバージョンがインストールされている場合、つまりPATH変数で指定された複数の場所にJava
実行可能ファイルがある場合は、左から右に移動したときに最初に見つかったものが実行されます。
コンパイラー・コマンドはjavac
であり、JDKにのみ付属しています。実行時コマンドはJava
であり、JDKに付属しており、JREにあります。
あるバージョン(51.0 = Java 7)のjavac
がインストールされていて、同じバージョンのJava
もインストールされている可能性がありますが、別の以前のバージョンのJava
がPATHの前半に表示され、あなたが期待するもの。
EclipseからAntを実行したときに同じエラーメッセージが表示されましたが、ここで説明した他の解決策では問題は解決しませんでした。面白いのは、WindowsのコマンドラインからAntを実行しても問題なく実行されていたため、Eclipse内での設定の問題であることです。
Eclipseの下ではAntが実行されるべき環境を指定でき、これはJDKの代わりにJREとして設定されていることがわかりました。
JDKの上位バージョンを使用してコンパイルし、下位バージョンのJDKから実行しようとしました/ _ jre _ 。
これを確認するには、バージョン情報を参照してください。
javac -version
Java -version
それらは異なり、javacはより高いバージョン番号を持ちます。
これを回避するには、JDKバージョンのJavaを使用するか、またはそれよりも新しいJRE/JDKがある場合は実行します。
which javac
は場所を教えてくれます、例えば/usr/bin/javac
。 /usr/bin/Java <program>
を使って直接実行するだけです。
あるいは、環境変数を恒久的な解決策として設定することもできます。
私はそれを解決しました。私は走った:
Java_HOME=/usr/lib/jvm/Java-7-openjdk-i386
エラーは誤解を招く可能性があります、Unsupported major.minor version 51.0
。これは、バージョン51(Java 7)がサポートされていないという印象を与えます。そして私たちはJava 6を使うべきです。
エラーはあったはずです:
現在のJavaバージョン50はサポートされていません。代わりにJavaバージョン7(51:0以降)を使用してください。
Javaファイルは、実行しようとしているバージョン(ランタイムの低いバージョン)とは異なるバージョン(上位のコンパイラバージョン)でコンパイルされています。
それより低いバージョンでコンパイルされたクラスはそれ以降のより高いバージョンで実行されることが期待されていることは基本的な理解です。しかし、逆のこと(より高いコンパイラバージョンでコンパイルされ、より低いランタイムバージョンでそれを実行しようとすること)は、時には全く不可能です。
したがって、プログラムを実行しようとすると、このエラーが表示されます。 サポートされていないmajor.minorバージョンx.x
Q: 私はJava 7でアプリケーションを作成しました、しかし私のユーザーがそれを実行しようとすると彼らはUnsupported major.minorバージョン51.0エラーを受け取ります。これは何を意味し、私はそれについて何ができますか?
A: Java 7でjavacを使ってアプリケーションをコンパイルした場合、結果として得られるクラスファイルのバージョン番号は51.0になります。 7より前のバージョンの Javaはこの番号を認識しないので、ユーザーはアプリケーションを実行する前に[7。]にアップグレードする必要があります。 Java 7 APIを使用していない場合は、 javac -target 1.6を使用してアプリケーションをコンパイルし、1.6互換のクラスファイルを作成してください。 アプリケーションがwebstartを使用してデプロイされている場合は、必要な最小バージョンを指定できます。詳細については、Java Web Start およびJNLPに関する文書をここで参照してください。現在デスクトップにJava 6がインストールされているエンドユーザーに対して[7。] Java 7への自動更新をトリガーすると、この問題は解消されます。このスケジュールはまだ決まっていません。開発者に彼らのコードとJDK 7の間の問題を解決する時間を与えたいと思います。
(出典: Oracle.com )
私がJava 6に戻って、以前にJava 7でコンパイルされたクラスを実行しようとしたときにこの問題を抱えていました。
今日、このエラーメッセージは Tomcat 7 on Ubuntu 12.04.2 LTS (Precise Pangolin)にありました:
/var/log/Tomcat7/localhost.2014-04-08.log:
2014年4月8日9:00:55 AM org.Apache.catalina.core.StandardContext filterStart
重大:フィルターstruts2を開始する例外
Java.lang.UnsupportedClassVersionError:controller/ReqAccept:サポートされていないmajor.minorバージョン51.0(クラスcontroller.ReqAcceptを読み込めない)
Struts アプリケーションはJava 7でコンパイルされています。
結局、誰かがTomcat 7を再起動するために "service Tomcat [stop/start]"を使っています。
$ ps -ef | grep Java
Tomcat 7 31783 1 32 20:13 00:00:03/usr/lib/jvm /デフォルトJava/bin/Java ...
$/usr/lib/jvm /デフォルトJava/bin/Java -version
Javaのバージョン "1.6.0_27"
これにより、 "Unsupported major.minor version 51.0"エラーが発生します。
Tomcat 7を再起動するのに "/etc/init.d/Tomcat7 [stop/start]"を使ったところ、問題は解決しました。
$ ps -ef | grep Java
Tomcat 7 31886 1 80 20:24 00:00:10 /usr/local/Java/jdk1.7.0_15/bin/Java
$ /usr/local/Java/jdk1.7.0_15/bin/Java -version
Javaのバージョン "1.7.0_15"
Mac OS Xでは、私はJava_HOME変数を設定することでこの問題を解決できました。
export Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home
まず基本を正しく理解しましょう。
JREは NetBeans / Eclipse /スタンドアロンのコンポーネントであり、ライブラリ、JVM、Javaプラグイン、およびJava Web Startを提供します。コンパイラやデバッガは提供されていません。
JDKは、コンパイラとデバッガとともにJREのスーパーセットです。
あなたのJDKの代わりにJREとしてあなたのデフォルトのライブラリがあるとき、あなたはものをインポートする素晴らしい時間を持つことになるでしょう、しかしそれはコンパイルされません。
代わりに、パスをJDKに設定します(私はNetBeansを使用し、netbeans/etc/netbeans.conf内のnetbeans.confを使用してそれらを設定し、パスを変更します)。
私は自分のユニットテストを実行するためにコマンドラインから自分のプロジェクトでMavenコンパイルを実行しなければならなかったという問題を抱えていました。テストクラスを変更してEclipseに自動的に再コンパイルさせると、 "Unsupported major.minor version 51.0"エラーが発生しました。
私はJDK6とJDK7の両方をインストールしていますが、私のJRE設定はすべて、pomとEclipseのプロジェクトプロパティページの両方で1.6を指していました。これを解決するためのMavenアップデートプロジェクトやリフレッシュはありません。
最後に、私はプロジェクトを閉じてそれを再び開くことを試みました、そしてこれはそれを修正したようです! HTH
JavaクラスをJDK 7でコンパイルし、JDK 6でも同じクラスを実行しようとしています。
Java 9 -target
は--release
に置き換えられているため。
Java 11までは、--release
の使用可能な番号は6
7
、8
、9
、10
、11
です。
そして、あなたは、将来のバージョンが12
、13
であると推測できます。
古いターゲットjvm用にコンパイルするには、javac --release 7 Tmp.Java
を使用します//これにより、jvm> = 7で実行できる.classファイルが生成されます
その後、次の方法でターゲットバージョンを確認できます。
javap -v Tmp | grep version
出力では、major version
はターゲットjvmバージョンを識別します。
将来のバージョンはより古いバージョンを削除します:
次のコマンドを使用して、現在のjavacでサポートされているターゲットバージョンを確認できます。javac -help | grep releases
答えは問題です。
スレッド "main"の例外Java.lang.UnsupportedClassVersionError:edu/stevens/cs549/dhts/main/LocalContext:未サポートmajor.minorバージョン52.0
私は同じ問題を抱えていました。 AWS ec2インスタンスでこの問題を抱えていて、どういうわけかここでこの質問にリダイレクトされている人のために。 Amazon EC2インスタンスがJavaバージョン1.7を実行していたために問題が発生していましたが、Mavenを使用していたためにプロジェクトと互換性がなかった可能性があります。 Java 1.8用に事前設定されているので、新しいバージョンのJavaをインストールしました。
Sudo yum -y install Java-1.8.0
そして重要なステップは、古いバージョンを削除することです。
Sudo yum remove Java-1.7.0-openjdk
新しいバージョンをインストールした後にそれを削除することを忘れないでください、そうでなければそれは継続的に同じ古いバージョンを使用しているでしょう、そして私はそれがあなたの問題を解決することを願っています。
私は同じ問題に直面しました、そして私は Linux でそれを修正しました。
あなたの$Java_HOME
をチェックしてください
APKをコンパイル/ビルドするにはJDK 1.8が必要です。
Java JDK 1.8をインストールしてJava_HOME
を変更する
~/.bashrc
を編集し、JDK 1.8パスをJava_HOME
として追加します。
export Java_HOME=/usr/lib/jvm/Java-8-Oracle/jre/
そしてsource ~/.bashrc
現在の端末ウィンドウ/タブを閉じて、パスを確認するために$Java_HOME
を実行します。
Homebrew がインストールされたMac OS Xでこれを修正するもう1つの方法は、次のとおりです。
brew install Caskroom/cask/Java
私は同じ状況にありましたが、上記のヒントのどれも助けにはなりませんでした:)私たちの環境では、TomcatをWindows上でサービスとして実行していました。 Java 1.7をインストールし、このバージョンにJava_HOMEをセットアップしました。もちろんソースはJava 1.7上に構築されました。それにもかかわらず、Tomcatは以前のバージョンのJVMを使用していると述べました。徹底的に分析した結果、WindowsにインストールされたTomcatサービスは依然としてJava 1.6を指すJava_HOMEの古い値を保持していることがわかりました。新しいTomcatサービスをインストールした後、すべてが解決されました。結論は次のとおりです。Javaバージョンを変更してTomcatをサービスとして実行する場合は、Tomcatサービスを再インストールする必要があります。
Grails プロジェクトのSpring Source Tool(STS)IDEでも同じ問題が発生しました。インストールされているJavaのバージョンとプロジェクトのJavaのバージョンが1.7であることを確認しました。その後、 GGTS.ini ファイルでJavaのバージョンが1.6に設定されていることがわかりました。
解決策:
-Dosgi.requiredJavaVersion = 1.6がに変更されました
- Dosgi.requiredJavaVersion = 1.7
-vmargsの前に、以下の2行を追加してください。
- vm
jdk1.7.0_21/jre/lib/AMD64/server/libjvm.so
問題が解決しました。ハッピーコーディング.
2番目のプロジェクトがビルドパスに追加されている場合は、最初のプロジェクトと同じ コンパイラバージョン を使用してください。プロパティ - > Javaコンパイラ - >コンパイラ準拠レベル
これで終わりです!
私はすべて試しました。 Tomcatを再インストールすると、ついにうまくいきました。これは私が再インストールする前に私がチェックしたものです。
環境変数がこのようになっていることを確認してください。
$ echo $Java_HOME
C:\Program Files\Java\jdk1.7.0_51\
$ echo $JRE_HOME
C:\Program Files\Java\jdk1.7.0_51\jre\bin
EclipseがJava_HOMEに設定したものと同じjreを使用していることを確認してください(Java_HOMEが設定されていない場合はJRE_HOMEが表示されます)。 Window > Prefrences > Java > Installed JREs
(チェックされたものがデフォルトのものです)
Tomcatファイル、特にcatalina.batまたはstartup.batに変更を加えた場合は、Tomcatに、Java_HOME C:\Program Files (x86)\Apache\apache-Tomcat-7.0.26\bin
に設定したものとは異なるバージョンのJavaを調べるように指示している可能性があります。
javaの環境変数のバージョンを必ず確認してください。これは、Java_HOME
(JDKパス)とJRE_HOME
(JREパス)のバージョンの違いにすぎない可能性があります。
私にとっては、com/Sun/javadoc/Doclet
クラスでこのエラーが発生していました。ちょっと調べたところ、誤ってtools.jar
をJava 8から自分のJava 7フォルダーにコピーしたことがわかりました。
Java 7のtools.jar
を見つけてそれをフォルダに戻すことで私の問題は解決しました。だから試してみてください。
これをpom.xmlファイルに追加します。
<project ....>
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
</project>
1.7は、使用する予定のJavaのバージョンです。これは Maven compiler設定を上書きするので、ここからデバッグするのが良いでしょう。
Maven DependenciesがDeployment Assemblyにデプロイされていることを確認することで、この問題を解決しました。私の場合はそうではありませんでした。
それを追加して問題を解決しました。
私はOS X v10.11.5(El Capitan)を使っています、そして私はJava_HOMEを設定し、Mavenを通して "正しい" Javaバージョンを強制しようとしました。何も助けなかった。
アプリケーションの実行中にOS Xアカウントがログアウトされたときに問題が発生しました。再度ログインした後、OS Xはグレーアウトされた履歴で古いターミナルセッションを開きました。同じターミナルセッションを使用してプロジェクトをビルドしましたが、サポートされていないクラスバージョンエラーで失敗しました。
Mavenプロジェクトを掃除してもまったく役に立ちませんでした。
問題を解決するために、私は単に自動で開かれたターミナルウィンドウを閉じて、新しいものを使わなければなりませんでした。
私の場合、$ Java_HOMEと$ PATHのJavaのバージョンが異なるために問題が発生しました。
echo $Java_HOME
/usr/lib/jvm/Java-7-openjdk-AMD64/jre
echo $PATH
/opt/jdk/jdk1.8.0_151/bin:/usr/lib/jvm/Java-7-openjdk-AMD64/jre/bin:/usr/local/bin:/usr/bin:/bin
それらをJavaと同じバージョンに更新すると、問題はなくなりました。
export Java_HOME=/opt/jdk/jdk1.8.0_151
export PATH=$Java_HOME/bin:$PATH
ご存じのとおり、jdk(Java Development Kit)のbinディレクトリには環境変数Java_homeを入れるのが常に良い習慣です。
上記のあなたの問題を見ると、JREランタイム環境はJDkのスーパーセットライブラリで互換性のないクラスを探しているようです。このような問題を回避するために、JDKとJREまたはJboss(必要な場合)の完全なパッケージをOracleダウンロードソースから直接入手することをお勧めします。
私は同じ問題を抱えていた、そして私は この解決策 でこの問題を解決した - /Mac。誰かに役立つことを願っています。これは、システムが新しいバージョンのJDKを認識していないため、古いJDKを指しているためです。
以下のようにantを使用している場合は、build.xmlファイルでコンパイラの "target"を指定できます。
<target name="compile" depends="init">
<javac executable="${Java_HOME}\bin\javac" srcdir="${src.dir}" target="1.6" destdir="${classes.dir}" debug="true"
deprecation="true" classpathref="compile.classpath" encoding="utf8">
<include name="**/*.Java" />
</javac>
</target>