1661

編集、実行、コンパイルなどのオールインワン ツールとして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 のバージョンによっては、古いものや新しすぎるものがあります。

  1. どうすれば修正できますか?
  2. JDK をインストールし、パス変数を JRE ではなく JDK に設定する必要がありますか?
  3. PATHJREまたはJDKの変数の違いは何ですか?
4

50 に答える 50

2035

表示されているバージョン番号は、クラス ファイルと互換性のある JRE のバージョンを示しています。

報告されている主要な番号は次のとおりです。

Java SE 17 = 61,
Java SE 16 = 60, 
Java SE 15 = 59,
Java SE 14 = 58,
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 コンパイラにターゲット パラメータを指定して、以前の Java バージョンと互換性のあるコードを作成するようコンパイラに指示する必要があります。

たとえば、Java 1.4 と互換性のあるクラス ファイルを生成するには、次のコマンド ラインを使用します。

javac -target 1.4 HelloWorld.java

Java コンパイラの新しいバージョンでは、ブートストラップ クラス パスが設定されていないという警告が表示される可能性があります。このエラーの詳細については、ブログ投稿New javac warning for setting a older source without bootclasspath を参照してください。

于 2012-07-11T11:59:50.970 に答える
388

java.lang.UnsupportedClassVersionErrorこれは、コンパイル時の JDK が高く、実行時の JDK が低いために発生します。

于 2012-06-28T06:48:56.227 に答える
63

安心してください、解決しました。

実際には簡単です。同じバージョンの JRE / JDK の両方をインストールする必要があります。

JRE 6 -> JDK 6

JRE 7 -> JDK 7

等々。

于 2012-05-04T06:23:28.597 に答える
45

このエラーは、インストールされているよりも新しいバージョンの Java でコンパイルされた Java「クラス」ファイルをロードしようとしていることを意味します。

たとえば、.classJDK 7 用にコンパイルされたファイルを JDK 6 で実行しようとしているとします。

したがって、解決策は次のいずれかです。

  • Java ランタイムをアップグレードするか、
  • ソースがある場合は、ローカル Java コンパイラ (ある場合) を使用してクラスを再コンパイルします。

    javac ファイル名.java

開発者の場合、これは、別の開発者が .class ファイルをチェックインし、その開発者があなたよりも新しいバージョンの Java を持っている場合に発生する可能性があります!

于 2013-02-20T19:02:45.067 に答える
25

コードがコンパイルされたバージョンをサポートしていない 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.

于 2013-10-01T08:51:44.300 に答える
21

Macでも同様の状況があり、次のプロセスがうまくいきました。

ターミナルで、次のように入力します。

vi ~/.profile

次に、この行をファイルに追加して保存します

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk<version>.jdk/Contents/Home

ここで、バージョンはコンピューター上のバージョン ( 1.7.0_25.

エディターを終了し、次のコマンドを入力して有効にします

source ~/.profile 

次に、 java -version と入力して結果を確認します

java -version 

.profileファイルとは?

.profile ファイルは隠しファイルです。これはオプションのファイルで、プロファイル ファイルを持つユーザーがログインするときに実行するコマンドをシステムに指示します。たとえば、ユーザー名が bruno で、/Users/bruno/ に .profile ファイルがある場合、そのすべての内容ログイン手続き時に実行されます。

ソース: http://computers.tutsplus.com/tutorials/speed-up-your-terminal-workflow-with-command-aliases-and-profile--mac-30515

于 2014-02-11T06:55:26.433 に答える
14

最も一般的な問題はJAVA_HOME、複数インストールされている場合、正しい Java Development Kit ライブラリを指す変数の設定ミスです。

SDK Java フォルダーの場所を見つけるには、次のコマンドを実行します。

jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'

Debian/Ubuntu

インストールした 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ます。

フェドラ、オラクル Linux、レッドハット

次の方法で適切なパッケージをインストール/アップグレードします。

yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel

このjava-1.7.0-openjdkパッケージには、Java ランタイム環境のみが含まれています。Java プログラムを開発する場合は、java-1.7.0-openjdk-develパッケージをインストールします。

BSD

おそらく再構成が必要なopenjdk7と呼ばれる FreeBSD Ports コレクションに OpenJDK 7 パッケージがあります。

参照: OpenJDK wiki ページ

ウィンドウズ

Oracle サイトから適切な Java SE Development Kit ライブラリをインストールするか、

ジェンキンス

Jenkins でこの問題が発生している場合は、次を参照してください。

ただし、適切なバージョンの Java (新しい) を選択すると機能するupdate-alternativesはずです。

于 2015-04-04T12:16:11.253 に答える
14

一部の JAR ライブラリを Java 7 でコンパイルすることができ、Java ランタイムとして Java 6 のみを使用できます。一部の新しいライブラリで発生する可能性があります。

于 2013-06-25T12:51:24.033 に答える
12

JDK 1.7をインストールすると、問題は解決しました。

于 2014-01-07T06:43:36.677 に答える
12

Antスクリプトを使用してアプリケーションを構築していたときに、同じ問題に直面しました。

アプリケーション開発にEclipseを使用しており、プロジェクトのビルド プロパティでコンパイラのバージョンを変更しました。しかし、それは私にはうまくいきませんでした。その後、Ant スクリプトでコンパイラ バージョンを提供できることがわかりました。

Java ファイルをコンパイルするセクションで Ant スクリプトを変更しました。

<target name="build-java" depends="prepare-build">
    <echo message="Compiling java files"/>
    <javac ....
           target="1.5"...
    </javac>
</target>

これは、サポートされていない主要なマイナーな問題を解決するのに役立ちました。

于 2013-10-14T03:32:11.013 に答える
10

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 を使用している場合は、sourcetargetをに設定します。1.8

于 2014-03-10T11:01:51.030 に答える
10

これに基づいて...

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 Build Path -> Libraries -> Add Library -> JRE System Library -> Installed JREs -> Search .

検索が完了したら、使用可能なリストでライブラリを選択して、必要な JRE を追加します。

于 2014-05-28T09:10:14.300 に答える
8

JDK の上位バージョンを使用してコンパイルし、下位バージョンの JDK/ JREから実行しようとしました。

これを確認するには、バージョン情報を参照してください。

javac -version

java -version

これらは異なり、javac の方がバージョン番号が高くなります。

これを回避するには、JDK バージョンの Java を使用するか、または同様に機能する新しい JRE/JDK がある場合は実行します。

which javacのように場所が表示されます/usr/bin/javac。を使用して直接実行するだけ/usr/bin/java <program>です。

または、環境変数を永続的なソリューションとして設定できます。

于 2014-09-24T01:27:35.497 に答える
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 の複数のバージョンがインストールされている場合、つまりjavaPATH 変数で指定された複数の場所に実行可能ファイルがある場合、左から右に移動したときに最初に検出されたものが実行されます。

コンパイラ コマンドはjavac、JDK にのみ付属しています。ランタイム コマンドはjavaJDK に付属しており、JRE に含まれています。

の 1 つのバージョン (51.0 = Java 7) がjavacインストールされていて、同じバージョンの もインストールされjavaている可能性がありjavaます。 .

于 2015-03-26T09:42:12.540 に答える
8

Eclipse から Ant を実行したときに同じエラー メッセージが表示されましたが、ここに記載されている他の解決策では問題が解決しませんでした。面白いことに、Windows コマンド ラインから Ant を実行しても問題なく動作していたので、Eclipse 内の構成の問題である必要がありました。

Eclipse では、Ant を実行する環境を指定でき、これは JDK ではなく JRE として設定されていることがわかりました。

  • 移動: 実行 -> 外部ツール -> 外部ツールの構成 ...
  • プロジェクトの Ant build.xml を選択します (複数のプロジェクトがある場合)。
  • タブ「JRE」をアクティブにします
  • ここでは「Separate JRE: jre6」を選択しました。これを 1.6 または 1.7 シリーズの JDK に変更したところ、エラーはなくなりました。
于 2014-02-11T10:36:05.767 に答える
6

本日、 Ubuntu 12.04.2 LTS (Precise Pangolin)のTomcat 7 に次のエラー メッセージが表示されました。

/var/log/tomcat7/localhost.2014-04-08.log:
2014 年 4 月 8 日 9:00:55 AM org.apache.catalina.core.StandardContext filterStart
SEVERE: フィルター struts2 の開始例外
java.lang.UnsupportedClassVersionError: コントローラー/ReqAccept : サポートされていない major.minor バージョン 51.0 (クラス controller.ReqAccept を読み込めません)

StrutsアプリケーションはJava 7 でコンパイルされています。

誰かが "service tomcat [stop/start]" を使用して Tomcat 7 を再起動し、

$ ps -ef | grep java
tomcat7 31783 1 32 20:13 ? 00:00:03 /usr/lib/jvm/default-java/bin/java...
$ /usr/lib/jvm/default-java/bin/java -version
Java バージョン "1.6.0_27"

これにより、「サポートされていない major.minor バージョン 51.0」エラーが発生します。

「/etc/init.d/tomcat7 [stop/start]」を使用して Tomcat 7 を再起動したところ、問題は解決しました。

$ ps -ef | grep java
tomcat7 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"

于 2014-04-08T04:52:23.347 に答える
6

Java 6 に戻し、以前に Java 7 でコンパイルされたクラスを実行しようとしたときに、この問題が発生しました。

于 2014-04-15T03:09:37.623 に答える
5

Mac OS XI では、JAVA_HOME 変数を設定することでこの問題を解決できました。

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home
于 2015-04-09T09:10:19.553 に答える
4

まずは基本をしっかりと…

JRE はNetBeans / Eclipse /standalone のコンポーネントで、ライブラリ、JVM、Java プラグイン、および Java Web Start を提供します。コンパイラやデバッガは提供されないことに注意してください。

JDK は、コンパイラーやデバッガーとともに JRE のスーパーセットです。

したがって、デフォルトのライブラリを JDK ではなく JRE として使用すると、インポートするのは楽しくなりますが、コンパイルされません。

代わりに、パスを JDK に設定します (私は NetBeans を使用しており、netbeans/etc/netbeans.conf で netbeans.conf を使用してそれらを設定し、パスを変更します)。

于 2014-03-19T17:49:01.473 に答える
3

Java クラスを JDK 7 でコンパイルし、同じクラスを JDK 6 で実行しようとしています。

于 2014-06-26T07:40:13.380 に答える
3
  • JDK 7.0.55 をインストールし、Java for Eclipseを JDK 7.0.55 用に設定します。
  • ビルド パス JDK 7.0.55 で構成することにより、JDK 7.0.55 でプロジェクトをビルドします。
  • メニューWindows -> Preferences -> Java -> Compiler - 1.7 を選択して、JDK 7.0.55 用の Eclipse でコンパイラを設定します。
于 2014-08-04T10:21:55.963 に答える
1

Homebrewがインストールされた Mac OS X でこれを修正するさらに別の方法は次のとおりです。

brew install Caskroom/cask/java
于 2015-08-04T09:45:23.157 に答える
0

これを 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コンパイラの設定が上書きされるため、ここからデバッグするとよいでしょう。

于 2015-09-01T08:34:44.910 に答える
0

Grailsプロジェクトの Spring Source Tool (STS) IDE で同じ問題が発生しました。インストールされている Java のバージョンを確認したところ、プロジェクトの Java のバージョンは 1.7.* でした。後で、GGTS.iniファイルで Java バージョンが 1.6 に設定されていることがわかりました。

解決:

-Dosgi.requiredJavaVersion=1.6 を
-Dosgi.requiredJavaVersion=1.7に変更 -vmargs -vm jdk1.7.0_21/jre/lib/amd64/server/libjvm.so
の前に以下の 2 行を追加

問題が解決しました。ハッピーコーディング。

于 2015-04-18T12:21:02.620 に答える
0

私は同じ状況にありましたが、上記のヒントはどれも役に立ちませんでした:) 私たちの環境では、Tomcat を Windows のサービスとして実行していました。Java 1.7 をインストールし、このバージョンで JAVA_HOME をセットアップしました。もちろん、ソースは Java 1.7 でビルドされています。それにもかかわらず、Tomcat は以前のバージョンの JVM を使用していると述べています。詳細な分析の結果、Windows にインストールされた Tomcat サービスは、Java 1.6 を指す JAVA_HOME の古い値を保持していることが判明しました。新しい Tomcat サービスをインストールした後、すべてが解決されました。結論は次のとおりです。Java のバージョンを変更し、Tomcat をサービスとして実行している場合は、Tomcat サービスを再インストールする必要があります。

于 2014-11-28T13:59:33.220 に答える
0

Maven Dependencies が Deployment Assembly にデプロイされていることを確認することで、この問題を解決しました。私の場合、そうではありませんでした。

追加すると問題が解決しました。

于 2015-11-01T00:35:58.327 に答える
-1

OS X v10.11.5 (El Capitan) を使用しています。JAVA_HOME を設定し、Maven を介して「正しい」Java バージョンを強制しようとしました。何も助けませんでした。

この問題は、アプリケーションがまだ実行されている間に OS X アカウントがログアウトされたときに発生しました。再度ログインした後、OS X は古いターミナル セッションを開き、履歴はグレー表示されていました。同じターミナル セッションを使用してプロジェクトをビルドしましたが、サポートされていないクラス バージョン エラーで失敗しました。

Maven プロジェクトをクリーンアップしても、まったく役に立ちませんでした。

この問題を解決するには、自動で開いたターミナル ウィンドウを閉じて、新しいウィンドウを使用するだけで済みました。

于 2016-07-20T08:18:27.733 に答える
-1
  1. プロジェクトで [プロパティ] をクリックします。
  2. Java ビルド パスに移動します。
  3. [ライブラリを追加] をクリックします。
  4. [JRE システム ライブラリ] で [次へ] をクリックします。デフォルトで選択されていない場合は、必要なものを選択してください。
  5. [完了] をクリックします。

あなたは終わった!

于 2016-10-12T21:54:43.810 に答える
-1

私にとっては、com/sun/javadoc/Docletクラスでこのエラーが発生していました。掘り下げた後、誤っtools.jarて Java 8 から Java 7 フォルダーにコピーしたことがわかりました。

Java 7の を見つけてtools.jarフォルダーに戻すと、問題が解決しました。だから試してみてください。

于 2017-01-19T15:59:28.220 に答える