Vraag Hoe te repareren java.lang.UnsupportedClassVersionError: niet-ondersteunde major.minor versie


Ik probeer te gebruiken notepad ++ als mijn all-in-one tool bewerken, uitvoeren, compileren, etc.

ik heb JRE geïnstalleerd en ik heb mijn padvariabele ingesteld op de map ... / bin.

Wanneer ik mijn "Hello-wereld" in Notepad ++ uitvoer, krijg ik de volgende melding:

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)
       .........................................

Ik denk dat het probleem hier gaat over versies; sommige versies van Java zijn mogelijk oud of te nieuw.

  1. Hoe los ik het op?
  2. Moet ik de JDK installeren en mijn padvariabele instellen op de JDK in plaats van JRE?
  3. Wat is het verschil tussen de PATH variabel in JRE of JDK?

1384
2018-04-30 11:28


oorsprong


antwoorden:


Het weergegeven versienummer beschrijft de versie van JRE waarmee het klassenbestand compatibel is.

De gerapporteerde hoofdnummers zijn:

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

(Bron: Wikipedia)

Om het probleem op te lossen, moet u proberen de Java-code uit te voeren met een nieuwere versie van Java JRE of de doelparameter voor de Java-compiler op te geven om de compiler opdracht te geven code te maken die compatibel is met eerdere Java-versies.

Als u bijvoorbeeld klassebestanden wilt genereren die compatibel zijn met Java 1.4, gebruikt u de volgende opdrachtregel:

javac -target 1.4 HelloWorld.java

Bij nieuwere versies van de Java-compiler krijgt u waarschijnlijk een waarschuwing dat het pad van de bootstrap-klasse niet is ingesteld. Meer informatie over deze fout is beschikbaar in blogpost Nieuwe javac-waarschuwing voor het instellen van een oudere bron zonder bootclasspath.


1773
2017-07-11 11:59



java.lang.UnsupportedClassVersionError gebeurt vanwege een hogere JDK tijdens compilatie en lagere JDK tijdens runtime.


328
2018-06-28 06:48



In Eclipse ging ik gewoon naar het menu-commando Venster -> voorkeuren -> Java -> Compiler en stel vervolgens "Compiler-compliantieniveau" in op 1.6.


111
2018-05-02 18:58



Maak je geen zorgen, ik heb het opgelost.

Het is eigenlijk eenvoudig - u moet BEIDE JRE / JDK met dezelfde versie installeren.

JRE 6 -> JDK 6

JRE 7 -> JDK 7

Enzovoort.


55
2018-05-04 06:23



Deze fout betekent dat u probeert een Java "class" -bestand te laden dat is gecompileerd met een nieuwere versie van Java dan dat u hebt geïnstalleerd.

Bijvoorbeeld uw .class bestand kon gecompileerd zijn voor JDK 7, en je probeert het uit te voeren met JDK 6.

Dus de oplossing is om:

  • Upgrade uw Java-runtime of
  • Hercompileer de klasse als je de bron hebt, met behulp van je lokale Java-compiler (als je die hebt).

    javac FileName.java

Voor ontwikkelaars kan dit gebeuren als een andere ontwikkelaar een .class-bestand ingecheckt en ze een nieuwere versie van Java hebben dan jij!


37
2018-02-20 19:02



U probeert uw programma uit te voeren met een Java-versie die de versie waarin de code is gecompileerd niet ondersteunt. Dus eigenlijk moet je je code hebben gecompileerd met een hogere versie en proberen deze uit te voeren met een lagere versie.

Zoals je krijgt

Unsupported major.minor version 51.0

en versie 51,0 komt overeen met J2SE 7 je hebt waarschijnlijk je code gecompileerd in Java 7 en geprobeerd het uit te voeren met een lagere versie. Controleer wat java -versiondisplays. Het zou de Java 7-versie moeten zijn. Maak geen gepaste wijzigingen in de PATH / JAVA_HOME. Of u kunt compileren met dezelfde versie die u probeert de code uit te voeren. Als de configuraties verwarrend zijn, kunt u altijd het absolute pad opgeven /home/user/jdk1.7.0_11/bin/javac en /home/user/jdk1.7.0_11/bin/java.


20
2017-10-01 08:51



Ik had een vergelijkbare situatie op Mac en het volgende proces werkte voor mij:

Typ in de terminal

vi ~/.profile

Voeg deze regel vervolgens toe aan het bestand en sla op

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

waar versie is degene op uw computer, zoals 1.7.0_25.

Sluit de editor en typ de volgende opdracht om deze effectief te maken

source ~/.profile 

Typ vervolgens java -version om het resultaat te controleren

java -version 

Wat is .profile het dossier?

.profile bestand is een verborgen bestand. Het is een optioneel bestand dat het systeem laat weten welke commando's moeten worden uitgevoerd wanneer de gebruiker van wie het profielbestand is ingelogd. Bijvoorbeeld, als mijn gebruikersnaam bruno is en er is een .profile-bestand in / Users / bruno /, de volledige inhoud wordt uitgevoerd tijdens de inlogprocedure.

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


17
2018-02-11 06:55