{"id":562,"date":"2025-01-02T19:03:55","date_gmt":"2025-01-02T18:03:55","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=562"},"modified":"2025-02-25T19:05:36","modified_gmt":"2025-02-25T18:05:36","slug":"fehler-class-file-has-wrong-version-in-java-beheben","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=562","title":{"rendered":"Fehler &#8222;class file has wrong version&#8220; in Java beheben"},"content":{"rendered":"\n<p>Beim Entwickeln von Java-Anwendungen kann es vorkommen, dass der Compiler oder die Laufzeitumgebung einen Fehler der Art &#8222;class file has wrong version&#8220; ausgibt. Dieser Fehler tritt auf, wenn eine Java-Klassen-Datei (eine .class-Datei) mit einer anderen Java-Version kompiliert wurde als die, die zur Laufzeit verwendet wird. In diesem Artikel werden die Ursachen dieses Problems analysiert und verschiedene L\u00f6sungsm\u00f6glichkeiten vorgestellt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ursachen des Fehlers<\/h2>\n\n\n\n<p>Jede Java-Version kompiliert Klassen mit einer spezifischen &#8222;class file version&#8220;. Wenn versucht wird, eine Klasse mit einer \u00e4lteren JVM-Version auszuf\u00fchren, die mit einer neueren Version kompiliert wurde, wird dieser Fehler auftreten. Dies geschieht h\u00e4ufig in den folgenden Szenarien:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Inkompatibilit\u00e4t zwischen Compiler und Laufzeitumgebung<\/strong>: Eine Anwendung wird mit einer neueren JDK-Version kompiliert, aber mit einer \u00e4lteren JVM ausgef\u00fchrt.<\/li>\n\n\n\n<li><strong>Unpassende Abh\u00e4ngigkeiten (Dependencies)<\/strong>: Eine Bibliothek wird mit einer h\u00f6heren Java-Version kompiliert als das Projekt, das sie nutzen will.<\/li>\n\n\n\n<li><strong>Mischung von JDK-Versionen innerhalb eines Projekts<\/strong>: Manche Build-Systeme oder IDEs verwenden unterschiedliche JDK-Versionen f\u00fcr verschiedene Module oder w\u00e4hrend des Kompilierens und Laufens.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Bekannte &#8222;class file versions&#8220; und zugeh\u00f6rige JVM-Versionen<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>&#8222;class file version&#8220;<\/th><th>Java-Version<\/th><\/tr><\/thead><tbody><tr><td>45<\/td><td>Java 1.1<\/td><\/tr><tr><td>46<\/td><td>Java 1.2<\/td><\/tr><tr><td>47<\/td><td>Java 1.3<\/td><\/tr><tr><td>48<\/td><td>Java 1.4<\/td><\/tr><tr><td>49<\/td><td>Java 5<\/td><\/tr><tr><td>50<\/td><td>Java 6<\/td><\/tr><tr><td>51<\/td><td>Java 7<\/td><\/tr><tr><td>52<\/td><td>Java 8<\/td><\/tr><tr><td>53<\/td><td>Java 9<\/td><\/tr><tr><td>54<\/td><td>Java 10<\/td><\/tr><tr><td>55<\/td><td>Java 11<\/td><\/tr><tr><td>56<\/td><td>Java 12<\/td><\/tr><tr><td>57<\/td><td>Java 13<\/td><\/tr><tr><td>58<\/td><td>Java 14<\/td><\/tr><tr><td>59<\/td><td>Java 15<\/td><\/tr><tr><td>60<\/td><td>Java 16<\/td><\/tr><tr><td>61<\/td><td>Java 17<\/td><\/tr><tr><td>62<\/td><td>Java 18<\/td><\/tr><tr><td>63<\/td><td>Java 19<\/td><\/tr><tr><td>64<\/td><td>Java 20<\/td><\/tr><tr><td>65<\/td><td>Java 21<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">L\u00f6sungsm\u00f6glichkeiten<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>Upgrade der JVM (Laufzeitumgebung)<\/strong><\/h3>\n\n\n\n<p>Falls eine Klassen-Datei eine h\u00f6here Version aufweist als die aktuelle JVM unterst\u00fctzt, sollte zun\u00e4chst \u00fcberpr\u00fcft werden, ob ein Upgrade der JVM m\u00f6glich ist. Dies kann mit folgendem Befehl gepr\u00fcft werden:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">java -version\n<\/code><\/span><\/pre>\n\n\n<p>Falls eine \u00e4ltere Version verwendet wird, kann eine neuere JDK-Version von <a href=\"https:\/\/www.oracle.com\/java\/technologies\/javase-downloads.html\">Oracle<\/a> oder <a href=\"https:\/\/jdk.java.net\/\">OpenJDK<\/a> heruntergeladen und installiert werden.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">JVM-Upgrade auf macOS\/Linux<\/h4>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">sudo apt update &amp;&amp; sudo apt install openjdk-XX-jdk   <span class=\"hljs-comment\"># f\u00fcr Debian-basierte Systeme<\/span>\nbrew install openjdk@XX                             <span class=\"hljs-comment\"># f\u00fcr macOS mit Homebrew<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\">JVM-Upgrade auf Windows<\/h4>\n\n\n\n<p>F\u00fcr Windows kann das JDK einfach als MSI-Paket installiert und die Umgebungsvariable <code>JAVA_HOME<\/code> entsprechend angepasst werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. <strong>Downgrade der Abh\u00e4ngigkeiten<\/strong><\/h3>\n\n\n\n<p>Falls eine Abh\u00e4ngigkeit mit einer h\u00f6heren Java-Version kompiliert wurde als das Projekt verwendet, muss diese angepasst werden. Dies kann in Build-Tools wie Maven oder Gradle erfolgen.<\/p>\n\n\n\n<p><strong>In Maven:<\/strong> Die Java-Version einer Abh\u00e4ngigkeit kann mit folgenden Befehlen \u00fcberpr\u00fcft werden:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">mvn<\/span> <span class=\"hljs-selector-tag\">dependency<\/span><span class=\"hljs-selector-pseudo\">:tree<\/span>\n<span class=\"hljs-selector-tag\">mvn<\/span> <span class=\"hljs-selector-tag\">dependency<\/span><span class=\"hljs-selector-pseudo\">:analyze<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Falls eine inkompatible Version vorliegt, kann die Version in der <code>pom.xml<\/code> ge\u00e4ndert werden:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>com.example<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>example-lib<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version<\/span>&gt;<\/span>1.2.3<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">version<\/span>&gt;<\/span>  <span class=\"hljs-comment\">&lt;!-- auf kompatible Version setzen --&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>In Gradle:<\/strong> Die Abh\u00e4ngigkeitsversionen k\u00f6nnen mit folgendem Befehl gepr\u00fcft werden:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">gradle dependencies\n<\/code><\/span><\/pre>\n\n\n<p>Falls eine inkompatible Abh\u00e4ngigkeit gefunden wird, kann die Version in der <code>build.gradle<\/code> Datei angepasst werden:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">dependencies {\n    implementation <span class=\"hljs-string\">'com.example:example-lib:1.2.3'<\/span> <span class=\"hljs-comment\">\/\/ auf kompatible Version setzen<\/span>\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">3. <strong>Projekt auf eine \u00e4ltere Java-Version kompilieren (Quell- und Zielversion setzen)<\/strong><\/h3>\n\n\n\n<p>Falls es erforderlich ist, dass der Code auf einer \u00e4lteren JVM lauff\u00e4hig bleibt, kann die Java-Kompilierung so eingestellt werden, dass sie eine \u00e4ltere Version nutzt.<\/p>\n\n\n\n<p><strong>In Maven:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">properties<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">maven.compiler.source<\/span>&gt;<\/span>11<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">maven.compiler.source<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">maven.compiler.target<\/span>&gt;<\/span>11<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">maven.compiler.target<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">properties<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>In Gradle:<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">tasks.withType(JavaCompile) {\n    sourceCompatibility = <span class=\"hljs-string\">'11'<\/span>\n    targetCompatibility = <span class=\"hljs-string\">'11'<\/span>\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">4. <strong>IDE- und Build-Tools-Einstellungen pr\u00fcfen<\/strong><\/h3>\n\n\n\n<p>Falls verschiedene Teile eines Projekts mit unterschiedlichen JDK-Versionen kompiliert werden, sollte sichergestellt werden, dass \u00fcberall die gleiche Version eingestellt ist.<\/p>\n\n\n\n<p>In IntelliJ IDEA kann dies unter <code>File &gt; Project Structure &gt; Project SDK<\/code> gepr\u00fcft werden.<\/p>\n\n\n\n<p>In Eclipse muss unter <code>Window &gt; Preferences &gt; Java &gt; Installed JREs<\/code> sichergestellt werden, dass die richtige Version verwendet wird.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Der Fehler &#8222;class file has wrong version&#8220; tritt auf, wenn eine Klassen-Datei mit einer neueren Java-Version kompiliert wurde, als die JVM zur Verf\u00fcgung stellt. M\u00f6gliche L\u00f6sungen beinhalten das Upgrade der JVM, das Downgrade von Abh\u00e4ngigkeiten oder die Anpassung der Kompiliereinstellungen. Durch eine konsistente Nutzung von Java-Versionen innerhalb eines Projekts lassen sich viele dieser Probleme von vornherein vermeiden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Beim Entwickeln von Java-Anwendungen kann es vorkommen, dass der Compiler oder die Laufzeitumgebung einen Fehler der Art &#8222;class file has wrong version&#8220; ausgibt. Dieser Fehler tritt auf, wenn eine Java-Klassen-Datei (eine .class-Datei) mit einer anderen Java-Version kompiliert wurde als die, die zur Laufzeit verwendet wird. In diesem Artikel werden die Ursachen dieses Problems analysiert und [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-562","post","type-post","status-publish","format-standard","hentry","category-plain_java"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/562","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=562"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/562\/revisions"}],"predecessor-version":[{"id":563,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/562\/revisions\/563"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=562"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=562"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=562"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}