Java.lang.UnsupportedClassVersionError: Desteklenmeyen major.minor sürümü nasıl düzeltilir?


1573

Notepad ++'ı all-in-one aracı düzenleme, çalıştırma, derleme vb. Olarak kullanmaya çalışıyorum .

Ben JRE yüklü ve ben kurulum Benim yolum değişkeni var .../bindizine.

"Merhaba dünyamı" Notepad ++ ile çalıştırdığımda şu iletiyi alıyorum:

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

Bence buradaki problem versiyonlarla ilgili; bazı Java sürümleri eski veya çok yeni olabilir.

  1. Nasıl düzeltebilirim?
  2. JDK'yı yüklemeli ve yol değişkenimi JRE yerine JDK'ya ayarlamam gerekir mi?
  3. PATHJRE veya JDK'daki değişken arasındaki fark nedir ?

jdk'yi de kurdun mu? jre Java RunTime ortamı, Java uygulamaları oluşturmak için
jdk'ye

evet yaptım ve şimdi benim yol değişkeni jdk nerede olduğunu gösterir. henüz hala bu "desteklenmeyen küçük sürüm 51.0" hatası var mı ben jdk eski sürümünü yüklemeniz gerektiğini düşünüyorum? im jdk 1.7.0 kullanarak
ERJAN

20
Bu, Mac OS X'te, bu günlerde OSX'teki garip Apple java 6 ve Oracle java 7 durumu nedeniyle sorun yaşadığımda oldu. kısa versiyon: JDK7 ile derleyin, JDK6 ile çalıştırın, bunu elde edin.
Warren P

7
); Java olarak SinifAdi Sermaye harfi ile başlaması gerektiğini söyleyen
Ashish Panery

5
El Captain için bu cevap benim için düzeltti: stackoverflow.com/a/34201991/1615594
tsuz

Yanıtlar:


1940

Gösterilen sürüm numarası, sınıf dosyasının uyumlu olduğu JRE sürümünü tanımlar.

Bildirilen ana sayılar:

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

(Kaynak: Wikipedia )

Gerçek sorunu gidermek için Java kodunu Java JRE'nin daha yeni bir sürümüyle çalıştırmayı denemelisiniz veya derleyiciye önceki Java sürümleriyle uyumlu kod oluşturma talimatı vermek için Java derleyicisine hedef parametresini belirtmelisiniz.

Örneğin, Java 1.4 ile uyumlu sınıf dosyaları oluşturmak için aşağıdaki komut satırını kullanın:

javac -target 1.4 HelloWorld.java

Java derleyicisinin daha yeni sürümlerinde, önyükleme yapılmayan bootstrap sınıfı yolu hakkında bir uyarı alırsınız. Bu hata hakkında daha fazla bilgi bir blog gönderisinde bulunmaktadır . Bootclasspath olmadan daha eski bir kaynak ayarlamak için yeni javac uyarısı .


167
"Gösterilen sürüm numarası, kodu derlemek için Java kullanıldıysa hangi sürümü tanımlar." Hayır değil. Sınıf dosyasının uyumlu olduğu JRE sürümünü gösterir. Çapraz derleme seçeneklerini kullanarak , kodu 1.1 sınıf sürümü ile (1.7'den 1.7) derlemek için 1.7 JDK kullanabilirsiniz.
Andrew Thompson

85
Bu cevap, soru sorulduğu gibi nasıl düzeltileceğini açıklamıyor mu?
Jonathan Leung

7
Eclipse'den önceki bir sürüme doğrudan derlemek için güzel bir çözüm: stackoverflow.com/a/16345710/2091700
Alphaaa

19
Tutulma projesi => Proerties => java derleyici; "derleyici uyumluluk düzeyini" jre veya jdk'nize göre sürüme ayarlayın. Bana gelince, jre 1.6 için 1.6
Sam

5
Derleyici kaynağı şu anda derleyen JRE / JDK ile uyumsuz olarak ayarlandığında bu durum oluşabilir. Örneğin, eclipse .settings klasöründen, org.eclipse.jdt.core.compiler.compliance = 1.7, org.eclipse.jdt.core.compiler.source = 1.7, org.eclipse.jdt.core.compiler'dan aşağıdaki değerleri buldum .codegen.targetPlatform = 1.7. Derleyicim 1.6.0_32 idi. Değerler 1.6 olarak değiştirildikten sonra sorun çözüldü. İ :( JDK 1.7 kullanıyordum farklı bir çalışma alanından projeyi kopyalanan sonra sorun kökenli
Gana

367

java.lang.UnsupportedClassVersionError derleme sırasında daha yüksek bir JDK ve çalışma sırasında daha düşük JDK nedeniyle olur.


11
+1: bu sembolik bağlantıyı ( /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java) javac ile derleme için kullanılan sürüme değiştirmek bunu çözdü
ezdazuzena

1
Yukarıdaki değişikliği nasıl yapabilirim?
Ankur Raiyani

8
Proje -> Özellikler -> Java Derleyici Projeye özgü ayarları etkinleştirin. Ardından 1.7, 1.6 veya 1.5 olarak Derleyici Uyumluluk Düzeyi'ni seçin, uygulamanızı oluşturun ve test edin.
Vivek Kumar Ray

Java 7'ye taşındığımda, Eclipse bir şekilde Java 6'da çalışmaya çalıştı ... neden olduğu hakkında bir fikrim yok. Eski JDK kaldırıldığında benim için hile yaptı.
HDave

9
@ezdazuzena sudo update-alternatives --config javabunu yapmak için kullanın .
Thorbjørn Ravn Andersen

115

Eclipse'de, Window -> Preferences -> Java -> Compiler menü komutuna gittim ve sonra "Compiler uyumluluk seviyesi" ni 1.6 olarak ayarladım.


3
Tutulmada, bazen proje yönlerinin de uygun java sürümüne değiştirilmesi gerekir.
Bilal Mirza

6
Teşekkürler. Eclipse'in varsayılan yürütme ortamının (oluşturma yoluna giden JRE) ayrı bir ayar olduğunu belirtmek gerekir . JRE'yi ayarlamıştım, ancak derleyici uyumluluk düzeyini ayarlamamıştım; bu sorunu çözdü.
wchargin

Ve bu seçeneği ayarlamak için doğru yer olduğunu hata mesajından nasıl çıkardınız?
Alexander

Belki de bu: ant ve eclipse kullanıyorsanız stackoverflow.com/questions/7073485/… yardımcı olabilir.
OuuGiii

Soru Notepad ++ ile ilgili ama Tutulma ile ilgili değil.
gotwo

60

Endişelenme, çözdüm.

Aslında basit - BOTH JRE / JDK'yı aynı sürümle kurmanız gerekiyor.

JRE 6 -> JDK 6

JRE 7 -> JDK 7

Ve bunun gibi.


29
java 7 de 6'yı sorunsuzca halledebilir.
damienix

@damienix Muhtemelen Java 7 JRE'nin Java 6 derlenmiş bir sınıfı sorunsuz bir şekilde işleyebileceğini belirtmek istersiniz, aksi takdirde ifadeniz karışıklığa neden olur.
Frontear

43

Bu hata, yüklediğinizden daha yeni bir Java sürümüyle derlenen bir Java "sınıf" dosyasını yüklemeye çalıştığınız anlamına gelir.

Örneğin, .classdosyanız JDK 7 için derlenmiş olabilir ve JDK 6 ile çalıştırmaya çalışıyorsunuzdur.

Yani çözüm şunlardan biri:

  • Java çalışma zamanınızı yükseltin veya
  • Kaynağınız varsa, yerel Java derleyicinizi (varsa) kullanarak sınıfı yeniden derleyin.

    javac DosyaAdı.java

Geliştiriciler için, başka bir geliştirici bir .class dosyasını kontrol ederse ve sizinkinden daha yeni bir java sürümüne sahipse bu olabilir!


22

Programınızı, kodun derlendiği sürümü desteklemeyen bir Java sürümüyle çalıştırmaya çalışıyorsunuz. Temel olarak kodunuzu daha yüksek bir sürümle derlemiş ve daha düşük bir sürüm kullanarak çalıştırmayı denemelisiniz.

Alırken

Unsupported major.minor version 51.0

ve 51.0 sürümü , kodunuzu Java 7'de derlediğiniz ve daha düşük bir sürüm kullanarak çalıştırmaya çalıştığınız J2SE 7'ye karşılık gelir . Görüntülenenleri kontrol edin java -version. Java 7 sürümü olmalıdır. Aksi takdirde PATH / JAVA_HOME içinde uygun değişiklikleri yapın. Veya kodu çalıştırmaya çalıştığınız sürümle derleyebilirsiniz. Konfigürasyonlar kafa karıştırıcıysa, her zaman mutlak yol verebilir /home/user/jdk1.7.0_11/bin/javacve /home/user/jdk1.7.0_11/bin/java.


18

Mac'te de benzer bir durum yaşadım ve aşağıdaki süreç benim için çalıştı:

Terminalde şunu yazın

vi ~/.profile

Sonra bu satırı dosyaya ekleyin ve kaydedin

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

Burada sürüm, bilgisayarınızdaki sürümdür 1.7.0_25.

Düzenleyiciden çıkın, ardından etkili olmasını sağlamak için aşağıdaki komutu yazın

source ~/.profile 

Sonra sonucu kontrol etmek için java -version yazın

java -version 

Nedir .profiledosya?

.profile dosyası gizli bir dosyadır. Sisteme, profil dosyası olduğu kullanıcı oturum açtığında hangi komutların çalıştırılacağını bildiren isteğe bağlı bir dosyadır. Örneğin, kullanıcı adım bruno ise ve / Users / bruno / içinde bir .profile dosyası varsa, tüm içeriği oturum açma prosedürü sırasında yürütülür.

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


16

Eclipse'nin menüsünde Pencere -> Tercihler -> Java -> Derleyici ayrıca "Projeye Özgü Ayarları Yapılandır" seçeneğini de işaretleyin.

Aynı Java sürümünde hatayla karşılaşırsanız: projenizin derleme klasörünü el ile silmeyi deneyin. Sonra Eclipse'i yeniden başlatın.


14

Java 7'de derlenmiş bazı JAR kitaplıklarınız olabilir ve Java Runtime olarak yalnızca Java 6'ya sahipsiniz. Bazı yeni kütüphanelerde olabilir.


14

En sık karşılaşılan sorun, JAVA_HOMEbirden çok yüklüyse , değişkeninizin doğru Java Geliştirme Kiti kitaplığına işaret etmesi gereken yanlış yapılandırılmasıdır .

SDK Java klasörünün bulunduğu yeri bulmak için aşağıdaki komutları çalıştırın:

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

Debian / Ubuntu

Hangi java'yı (openjdk) yüklediğinizi kontrol etmek için:

dpkg -l "openjdk*" | grep ^i

veya:

update-java-alternatives -l

Değiştirmek için şunu kullanın:

update-alternatives --config java

sudoGerekirse ile önek ekleyin .

alternatif java sürümünü seçmek için.

Veya hangilerinin yüklenebileceğini kontrol edin:

apt-cache search ^openjdk

sudoGerekirse ile önek ekleyin .

Sonra yükleyebilirsiniz, örneğin:

apt-get install openjdk-7-jre

sudoGerekirse ile önek ekleyin .

Fedora, Oracle Linux, Kırmızı Şapka

Uygun paketi şu yöntemle yükleyin / yükseltin:

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

java-1.7.0-openjdkPaket sadece Java Runtime Environment içerir. Java programları geliştirmek istiyorsanız, java-1.7.0-openjdk-develpaketi yükleyin .

BSD

FreeBSD Ports koleksiyonunda openjdk7 adlı ve muhtemelen yeniden yapılandırılması gereken bir OpenJDK 7 paketi var .

Bkz . OpenJDK wiki sayfası .

pencereler

Oracle sitesinden uygun Java SE Geliştirme Kiti kütüphanesini kurmanız veya yüklemeniz yeterlidir

Jenkins

Jenkins ile bu sorunu yaşıyorsanız, bkz:

Ancak Java'nın doğru (daha yeni) sürümünü seçmeniz update-alternativesgerekir.


Bu yanıt, kıvılcım hizmetini cloudera içeren bir kümeye ekledikten sonra bir ana bilgisayarda spark2-shell kullanmaya çalışırken benim için çalıştı.
Alter

12

Uygulamamı oluşturmak için bir Ant komut dosyası ile çalışırken de aynı sorunla karşılaştım .

Eclipse'i uygulama geliştirmem için kullanıyorum ve derleyici sürümünü projenin derleme özelliklerinde değiştirdim. Ama bu benim için işe yaramadı. Sonra Ant komut dosyasında derleyici sürümünü sağlayabildiğimi öğrendim.

Ant komut dosyasını Java dosyalarını derlediği bölümde değiştirdim.

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

Bu benim için desteklenmeyen büyük önemsiz sorunları çözmeme yardımcı oldu.



12

Aynı problemi 1.7'de yazılmış bir projeyle aldım ve 1.6'da yürütmeye çalıştım.

Eclipse'teki çözümüm:

  • Proje Özellikleri -> Java Derleme Yolu -> Kütüphaneler'e sağ tıklayın

  • JRE Sistem Kütüphanenizi seçin ve sağdaki Düzenle'yi tıklayın ve hedef JRE'yi seçin.

  • Şimdi soldaki Java Derleyici'ye gidin ve Derleyici uyumluluk düzeyini hedefinize göre değiştirin.

Bu benim için çalıştı.


11

Birkaç kişi tarafından başka bir yerde yanıtlandığı gibi, Java programı, Java'nın derlendiği programdan daha eski bir sürümünde çalıştırılıyor. Geriye dönük uyumluluk için "çapraz derlenmiş" olması gerekir. Başka bir deyişle, kaynak ve hedef Java sürümleri arasında bir uyumsuzluk var.

Eclipse menülerindeki seçenekleri değiştirmek, Eclipse kullanmadığını söyleyen orijinal postere cevap vermez. OpenJDK javac sürüm 1.7'de, parametreler kullanıyorsanız 1.6 için çapraz derleme yapabilir -sourceve -targetayrıca derleme zamanında hedef sürümün rt.jar-dosyasını (yani daha eski olanı) sağlayabilirsiniz . 1.6 JRE'yi gerçekten yüklerseniz, kurulumuna işaret edebilirsiniz (örneğin, /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar Ubuntu, / usr / jdk / jdk1. SunOS üzerinde 6.0_60 / jre / lib / rt.jar Görünüşe göre, Windows sisteminde nerede olduğunu bilmiyorum). Şöyle ki:

javac -source 1.6 -target 1.6 -bootclasspath /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar HelloWorld.java

Görünüşe göre rt.jar dosyasını internetten indirebilir ve işaret edebilirsiniz. Bu çok zarif değil:

javac -source 1.6 -target 1.6 -bootclasspath ./rt.jar HelloWorld.java

10

Buna dayanarak ...

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'de, paket gezginindeki projeye sağ tıklayın:

Derleme Yolu -> Derleme Yolunu Yapılandırma

Altında:

Java Derleme Yolu -> Kütüphaneler -> Kütüphane Ekle -> JRE Sistem Kütüphanesi -> Yüklü JRE'ler -> Ara .

Arama tamamlandıktan sonra kullanılabilir listeden kitaplığı seçerek gerekli JRE'yi ekleyin.


10
  • Maven kullanıyorsanız, Java derleme düzeyinizi ayarlayın. Bir komut satırı açın ve java -versionderleme seviyeniz için yazın:

    Resim açıklamasını buraya girin

  • IntelliJ IDEA kullanıyorsanız proje → DosyaAyarlarYürütme Dağıtımı OluşturDerleyiciJava Derleyici'yi seçin . Sonra bayt kodunu bu resim gibi 1.7 olarak değiştirin:

    Resim açıklamasını buraya girin


Pom değiştirdikten sonra da temiz bir kurulum yapmam gerekiyordu.
Joe Borysko

10

Maven'i kullanırken bu sorunla karşılaşıyorsanız , eklenti Maven Derleyici'yi kullanarak kodunuzu derleyebilirsiniz .

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

GÜNCELLEME: set sourceve targethiç 1.8JDK 8 kullanıyorsanız,.


Çapraz derleme için eklentiyi nasıl kullanacağınıza dair bir pasaj, bağlantıyı ziyaret etmek / açmak yerine çok iyi olurdu
coding_idiot

8

Eclipse Ant çalıştırırken aynı hata mesajı vardı, ama burada belirtilen diğer çözümler sorunumu çözmedi. Komik olan şey, Ant komutunu Windows komut satırından çalıştırmanın iyi çalıştığıydı, bu yüzden Eclipse içinde bir yapılandırma sorunu olması gerekiyordu.

Eclipse altında Ant'in birlikte çalışması gereken ortamı belirleyebileceğiniz ve bunun JDK yerine JRE olarak ayarlandığı ortaya çıktı.

  • Git -> Harici Araçlar -> Harici Araçlar Yapılandırmaları ...
  • Projeniz için Ant build.xml dosyasını seçin (birden fazla projeniz varsa)
  • 'JRE' Sekmesini etkinleştirin
  • Burada 'Ayrı JRE: jre6' seçildi. Bunu 1.6 veya 1.7 serisinden bir JDK olarak değiştirdiğimde hata giderildi.

8

Nasıl düzeltebilirim?

Bu hata, sınıf kodunuzu yürütmek için kullanılan JRE'nin kullanılan Java sürümünü tanımadığı anlamına gelir. Genellikle sınıf dosyanızı oluşturan Java sürümü (yani derlenmiş) daha yeni olduğu için.

Düzeltmek için,

a) Java kaynaklarınızı çalıştırmak için kullanılacak Java derleyicisinin aynı veya daha eski sürümüyle derleyin. yani uygun JDK'yı yükleyin.

b) Java kaynaklarınızı Java derleyicisinin daha yeni sürümüyle, ancak uyumluluk modunda derleyin. yani -targetparametreyi kullanın .

c) Derlenen sınıflarınızı, sınıfları derlemek için kullanılan JDK ile aynı veya daha yeni bir JRE'de çalıştırın.

javac -versionDerleyici ve java -versionçalışma zamanı için kullanmakta olduğunuz sürümleri kontrol edebilirsiniz .

JDK'yı yüklemeli ve PATH değişkenimi JRE yerine JDK'ya ayarlamam gerekir mi?

Derleme için kesinlikle istediğiniz JDK'yı yükleyin ve yapılandırın.

Çalışma zamanı için, JDK veya bağımsız bir JRE ile birlikte geleni kullanabilirsiniz, ancak ne olursa olsun, doğru sürümleri yüklediğinizden ve PATH'nizi sürpriz olmayacak şekilde yapılandırdığınızdan emin olun.

JRE veya JDK'daki PATH değişkeni arasındaki fark nedir?

PATH ortam değişkeni, komut kabuğuna yazdığınız komutu nerede arayacağını söyler. Yazdığınızda java, komut kabuğu yorumlayıcısı, çalıştırılacak PATHuygun javaçalışma zamanını bulmak için değişkente soldan sağa belirtilen tüm konumlara bakar . Java'nın birden çok sürümü yüklüyse - yani javaPATH değişkeninde belirtilen birden çok konumda yürütülebilir programınız varsa, soldan sağa giderken karşılaşılan ilk uygulama yürütülür.

Derleyici komutu javacyalnızca JDK ile birlikte gelir. Runtime komutu javaJDK ile birlikte gelir ve JRE'de bulunur.

Bir sürümünün (51.0 = Java 7) javacyüklü olması ve aynı sürümün javayüklü olması muhtemeldir , ancak başka bir önceki sürümü javaPATH'de daha önce görünmektedir ve beklediğiniz sürüm yerine çağrılmaktadır. .


7

JDK / JRE'nin daha düşük bir sürümünü derlemek ve çalıştırmaya çalışmak için JDK'nın daha yüksek bir sürümünü kullandınız .

Bunu kontrol etmek için sürüm bilgilerine bakın:

javac -version

java -version

Farklı olacaklar ve javac'ın daha yüksek bir sürüm numarası olacak.

Bu sorunu çözmek için, JDK sürümünden java kullanarak veya daha yeni bir JRE / JDK'nız varsa çalıştırın.

which javacsize konumu söyleyecektir, örneğin /usr/bin/javac. Sadece kullanarak doğrudan çalıştırın /usr/bin/java <program>.

VEYA ortam değişkenini kalıcı bir çözüm olarak ayarlayabilirsiniz.


6

Java 6'ya geri döndüğümde ve daha önce Java 7 ile derlenmiş sınıfları çalıştırmayı denediğimde bu problemi yaşadım.


6

Bugün, bu hata mesajı Ubuntu 12.04.2 LTS'de (Hassas Pangolin) Tomcat 7'de ortaya çıktı :

/var/log/tomcat7/localhost.2014-04-08.log:
8 Nisan 2014 09:00:55 org.apache.catalina.core.StandardContext filterAVER SEVERE
: Başlangıç ​​filtresi struts2
java.lang.UsupportedClassVersionError: denetleyici / ReqAccept: Desteklenmeyen major.minor sürüm 51.0 (sınıf denetleyicisi yüklenemiyor. ReqAccept)

Struts uygulama Java 7 ile derlenmektedir.

Birisi Tomcat 7'yi yeniden başlatmak için "servis tomcat [durdur / başlat]" kullanıyor,

$ 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 -versiyon
java sürümü "1.6.0_27"

Bu da "Desteklenmeyen major.minor sürüm 51.0" hatasına neden olur.

Tomcat 7'yi yeniden başlatmak için "/etc/init.d/tomcat7 [durdur / başlat]" komutunu kullandığımızda sorun çözüldü.

$ 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 -versiyon
java sürümü "1.7.0_15"


6

Çözdüm. Koştum:

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386

Hata yanıltıcı Unsupported major.minor version 51.0. Bu, sürüm 51'in (Java 7) desteklenmediği izlenimini verir. Java 6 kullanmalıyız.

Hata:

Geçerli Java sürümü olan 50 desteklenmiyor. Bunun yerine Java sürüm 7'yi (51: 0 ve üstü) kullanın.`


6

Java dosyanız, çalıştırmaya çalıştığınız sürümden (daha düşük çalışma zamanı sürümü) farklı bir sürümle (daha yüksek derleyici sürümü) derlenmiştir.

Daha düşük sürümlerle derlenen sınıfların sonraki yüksek sürümlerde çalışması beklenir. Ancak bunun tersi (daha yüksek derleyici sürümü ile derlenmiş ve daha düşük çalışma zamanı sürümü ile çalıştırmaya çalışmak) bazen mümkün değildir.

Bu nedenle, programınızı yürütmeye çalışırken bu hatayı gösterilir. Desteklenmeyen major.minor sürüm xx

S: Java 7'de bir uygulama oluşturdum, ancak kullanıcılarım çalıştırmayı denediğinde Desteklenmeyen bir major.minor sürüm 51.0 hatası alıyorlar. Bu ne anlama geliyor ve bu konuda ne yapabilirim?

Y: Java 7'de javac kullanarak bir uygulama derlerseniz, elde edilen sınıf dosyalarında 51.0 sürüm numarası bulunur. 7'den önceki Java sürümleri bu sayıyı tanımaz, bu nedenle kullanıcılarınızın uygulamanızı çalıştırmadan önce Java 7'ye yükseltmeleri gerekir. Herhangi bir Java 7 API kullanmıyorsanız, 1.6 uyumlu bir sınıf dosyası oluşturmak için uygulamanızı javac -target 1.6 kullanarak derlemeyi deneyebilirsiniz. Uygulamanız webstart kullanılarak dağıtıldıysa, gereken minimum sürümü belirleyebilirsiniz. Daha fazla bilgi için Java Web Start ve JNLP belgelerine buradan bakın. Şu anda masaüstlerinde Java 6 bulunan son kullanıcılar için Java 7'ye otomatik güncellemeyi tetiklediğimizde bu sorun ortadan kalkacaktır. Bunun için zaman çizelgesi henüz belirlenmedi, geliştiricilere kodları ile JDK 7 arasındaki sorunları çözmek için zaman vermek istiyoruz.

(Kaynak: oracle.com .)


5

Oh Mac OS XI, JAVA_HOME değişkenini ayarlayarak bu sorunu çözebildi:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home

4

İlk önce bazı temel bilgileri doğru yapalım ...

JRE, NetBeans / Eclipse / bağımsız programında size kütüphaneler, JVM, Java eklentileri ve Java web başlangıcı sağlayacak bir bileşendir . Pense veya hata ayıklayıcı sağlamadığını unutmayın.

JDK, JRE'nin pense ve hata ayıklayıcılarla birlikte süper setidir.

Varsayılan kitaplığınız JDK yerine JRE olarak bulunduğunda, öğeleri içe aktarmak için iyi zaman geçireceksiniz, ancak derlenmeyecektir.

Bunun yerine, yolunuzu JDK olarak ayarlayın (NetBeans kullanıyorum ve netbeans / etc / netbeans.conf içinde netbeans.conf kullanarak ayarladım ve yolu değiştirdim).


3

Birim testlerimi yürütmek için komut satırından projemde Maven derlemesi yapmak zorunda kaldım; test sınıfında bir değişiklik yaptı ve Eclipse otomatik olarak yeniden derlemek izin, o zaman "Desteklenmeyen major.minor sürüm 51.0" hatası aldım.

Hem JDK6 hem de JDK7 yüklü, ancak tüm JRE ayarlarım hem pom'da hem de Eclipse'deki proje özellikleri sayfasından 1.6'yı gösteriyordu. Maven Güncelleme Projesi ve / veya yenileme miktarı bu sorunu çözmedi.

Sonunda projeyi kapatıp yeniden açmayı denedim ve bu düzeltti gibi görünüyordu! HTH


3

Java sınıfınızı JDK 7 ile derlediniz ve JDK 6'da aynı sınıfı çalıştırmaya çalışıyorsunuz.


3
  • JDK 7.0.55'i yükleyin ve JDK 7.0.55 için Eclipse için Java'yı ayarlayın.
  • JDK 7.0.55 oluşturma yolunu yapılandırarak projeyi JDK 7.0.55 ile derleyin.
  • Derleyiciyi JDK 7.0.55 for Eclipse'de Windows -> Tercihler -> Java -> Derleyici olarak ayarlayın - 1.7'yi seçin.

3

Cevap sorun için:

"Main" iş parçacığında özel durum java.lang.UnsupportedClassVersionError: edu / stevens / cs549 / dhts / main / LocalContext: Desteklenmeyen major.minor sürüm 52.0

Aynı sorunu yaşıyordum. AWS ec2 örneklerinde bu sorunu yaşayan ve bir şekilde burada bu soruya yönlendirilenler için. Bunlara cevap veriyorum ve bunu nasıl yaptığımı paylaşmak istiyorum. Ben sorun yaşıyordum çünkü Amazon EC2 örnekleri java sürüm 1.7 çalıştırıyordu ve belki de Maven'i kullandığım ve java 1.8 için önceden yapılandırılmış olduğu için projem onunla uyumlu değildi. Java'nın yeni sürümünü yükledim:

sudo yum -y install java-1.8.0

Ve sonra önemli adım eski sürümü kaldırmaktır:

sudo yum remove java-1.7.0-openjdk

Yeni sürümü yükledikten sonra silmeyi unutmayın, aksi takdirde sürekli olarak aynı eski sürümü kullanıyor olur ve umarım sorunumu çözer, ki bu da benim durumumda yaptı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.