私がソースからコンパイルしなければならなかったオープンソースライブラリを含めるとき、私はこのエラーを得ています。さて、Web上のすべての提案は、コードがあるバージョンでコンパイルされ、別のバージョンで実行されたことを示しています(新旧)。ただし、私のシステムにはJREのバージョンが1つしかありません。コマンドを実行すると
$ javac -version
javac 1.5.0_18
$ Java -version
Java version "1.5.0_18"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_18-b02)
Java HotSpot(TM) Server VM (build 1.5.0_18-b02, mixed mode)
そして、EclipseでJavaライブラリーのプロパティーを調べてください。私は1.5.0_18
を取得しています。
したがって、クラス自体の内部で何か他のものを例外をスローしていると結論付ける必要があります。それでも可能ですか?
私はこのようなエラーメッセージが通常正しいことを学びました。それが(あなたの心の中で)POSSIBLYが報告されているエラーが言っていることになることができなかったとき、あなたは別の領域で問題を探しに行きます...ただ数時間後に元のエラーメッセージが本当に正しかったことを見つけるために。
あなたがEclipseを使っているので、Thiloがそれを正しいと思う私があなたがこのメッセージを得ている最も可能性が高い理由はあなたのプロジェクトの1つが1.6クラスをコンパイルしているからです。 Eclipseには(javacではなく)独自のコンパイラがあり、1.6クラスをコンパイルするには1.5 JREしか必要ないため、システムに1.5 JREしかない場合でも問題ありません。それは奇妙かもしれません、そしてこれを可能にするために設定はチェックを外される必要があります、しかし私はちょうどそれをすることができました。
問題のプロジェクトについては、プロジェクトプロパティ(通常はAlt + Enter)、Javaコンパイラセクションを確認してください。これは1.6をコンパイルするように設定されたプロジェクトのイメージですが、1.5 JREしかありません。
完全に「クリーン」してからEclipseで再ビルドしてみましたか(Project-> Clean ...)?
コマンドラインから直接 "javac"と "Java"でコンパイルして実行できますか?それは正しく機能しますか?
プロジェクトを右クリックして[プロパティ]に移動し、次に[Javaビルドパス]に移動します。いずれかのタブに不審なエントリがありますか。これは基本的にあなたのCLASSPATHです。
Eclipseの設定では、「Java」セクションの「Installed JREs」セクションを再確認し、それが本来あるべきものと一致していることを確認してください。
古い.classファイルがどこかに存在しているか、使用しているバージョンのJavaでコンパイル時と実行時の不一致が発生しています。
Eclipseでコンパイルしましたか? (javacではなく)別のコンパイラを使用しています。 (すべてが正しく設定されていれば)このエラーにはならないはずですが、代わりにjavacでコンパイルしてみてください。
それでも問題が解決する場合は、Eclipseに誤ったコンパイラ設定があるかどうかを確認してください。特にJava 5をターゲットにしてください。
私も同じエラーを受けました。その理由は、Mavenを使用してプロジェクトをコンパイルしていたためです。私はJava_HOMEがJDK 7を指していたので、Java 1.7がコンパイルに使用されていて、プロジェクトの実行時にはJDK 1.5を使用していました。スクリーンショットのように.classpathファイルの以下のエントリを変更するか、Eclipseを変更すると問題は解決しました。
classpathentry kind="con" path="org.Eclipse.jdt.launching.JRE_CONTAINER/org.Eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5
またはEclipseの実行設定を のように変更します。
より高いバージョンのJava用にコンパイルされたプロジェクト内のjarファイルも確認してください。これらがあなた自身のライブラリの場合、target version属性をjavacに変更することでこれを修正できます
<javac destdir="${classes.dir}"
debug="on" classpathref="project.classpath" target="1.6">
明らかなことも常に確認してください。誤ってサーバーの追加および削除アクションのために誤ったリソースをつかんだときに、このエラーが発生しました。見逃しやすいかもしれません。
プロジェクトフォルダからプロジェクト固有の設定ファイル(Eclipseワークスペース/プロジェクトフォルダ/ .settings /)を削除することもできます。明らかに、削除した後にプロジェクトをクリーンにしてビルドする必要があります。
私はサーバーに必要なjreを変更することでこの問題を解決しました(私の場合はTomcatです)。 Eclipseの「サーバー」タブで、サーバーをダブルクリックし(サーバー構成のページを開くため)、「実行時環境」をクリックしてから、必要なJREを変更します。
java 1.7を使用するようにプロジェクトを変更する:これを機能させるには、次の手順に従います。
動作していませんか?
まだ動かない?
プロジェクトのディレクトリに移動します。settings/org.Eclipse.jdt.core.prefsを編集し、ターゲットレベルが適用されていることを確認します。
がんばろう!
これが発生する可能性があるもう1つのシナリオは、Host Eclipseから(デバッグなどのために)Eclipseのインスタンスを起動しているときです。重要なのは、ターゲットのEclipse環境を起動するために使用されるJREです。