Önemli hata derleme: geçersiz hedef sürümü: 1.8 -> [Yardım 1]


171

Geçersiz hedef sürümünde yayınlanan benzer bir sorun : 1.7 ama blogu takip ettikten sonra sorunum hala çözülmedi.

Hedef org.apache.maven.plugins yürütülemedi: maven-compiler-plugin: 3.1: hm_app projesinde derleme (varsayılan-derleme): Önemli hata derleme: geçersiz hedef sürümü: 1.8 -> [Yardım 1]

Bu sorunla karşılaştığımda öğretici olarak takip ediyordum .

abt java & mvn

C:\mvn>echo %JAVA_HOME% 
C:\mvn>echo %JRE_HOME%
C:\mvn>echo %MAVEN_HOME% yields

çıktılar

C:\Program Files\Java\jdk1.7.0_51
C:\Program Files\Java\jre7
C:\apache-maven-3.0.4

3
... ve Java 8'in bir yere kurulu olduğundan emin misiniz?
Makoto

x86, 64 java 7 ve java 8 yok
rvd

3
Tamam. Peki neden Java 8 kodunu Java 8 derleyicisi olmadan derlemeye çalışıyorsunuz?
Makoto

@Makoto java 8'i yüklerken sorunuma baktığımda çözüldü .... ty man :)
rvd

@Makoto Sonunda "Tamam. Peki neden Java 8 kodunu Java 8 derleyicisi olmadan derlemeye çalışıyorsunuz?" bu yüzden ben sadece pom.xml dosya java.version> 1.8 </java.version> java.version> 1.7 </java.version> değişti ve ben de java7 mvn derleme kullanabilirsiniz
rvd

Yanıtlar:


281

%JAVA_HOMEJdk 1.7 olarak ayarladınız , ancak 1.8 kullanarak derlemeye çalışıyorsunuz. JDK 1.8'i kurun ve %JAVA_HOMEpuanlarınızın bu olduğundan emin olun veya hedef sürümü 1.7'ye düşürün.

geçersiz hedef sürümü: 1.8

Hedef sürüm jdk versiyonunu ifade eder.


7
benim durumumda bir olası çözüm düzenleme pom.xml dosya java.version> 1.8 </java.version> java.version> 1.7 </java.version>
rvd

1
Bu özellikle maven'in java sürümünü aradığı yerdir. Böylece java sürümünü% JAVA_HOME cihazınıza yüklediğiniz bir sürüme değiştirdiniz.
Zavior

2
Bir mac benim /usr/libexec/java_home -v 1.8, JAVA_HOME 1.8 JDK için uygun konuma ayarlamak için JAVA_HOME = verme . 1.8 yerine en sevdiğiniz sürümü sağlayın. (= Ve 8'den sonra ters çentikler vardır).
bruce szalwinski

Evet, doğru anladın. Ben sadece 1.7 dün destekleyen başka bir eski program derlemek için değiştirdim: D Teşekkürler!
Davut Gürbüz

31

Değeri eklentiye koyun:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>

Hata kullanıldı:

<source>${java.version}</source>
<target>${java.version}</target>

2
Benim durumumda, çözüm hem kaynağı hem de hedefi 1.7'ye ayarlamaktır
thinkhy

bunu hangi dosyada bulabilirim?
Yusril Maulidan Raji

21

Benim durumumda maven "Çalıştırma yapılandırması" yanlış JRE (1.7) kullanıyordu. Bazı jdk1.8.x olmak için Çalıştır -> Çalıştırma Yapılandırmaları -> (Sekme) JRE'yi işaretlediğinizden emin olun.


bu doğrudur, bu nedenle bir dahaki sefere bu hatanın gelip gelmediğini kontrol etmek için aşağıdaki şeylere sahibiz: JAVA_HOME, BUILD_Configuration, RUN_Configuration
Farhan

13

Sorun 1.7'ye işaret eden bir JDK ve 1.8'e işaret eden JRE'ye sahip olduğu için çözüldü. Yazarken benim komut istemini kontrol et

java -version

ve

javac -version.

Her ikisi de aynı olmalıdır.  


5

Tutulma için burada sorunumu nasıl çözdüm:

  1. Tercihler -> Derleyici -> Derleyici Şikayet Seviyesi (1.8 olarak değiştir) resim açıklamasını buraya girin

  2. Referanslar -> Yüklü JRE'ler -> JAVA SE 8 1.8'i seçin resim açıklamasını buraya girin

  3. Maven derlemesi olarak çalıştır'ı kullanarak maven üzerinden yeniden oluşturun.

Artık geçersiz hedef hatasını göstermemelidir.
Not: Terminalimdeki diğer değişkenleri ayarlamak veya değiştirmek zorunda kalmadım. Bu yardımcı olur umarım.


2

Bunu .profile dosyasına koymak dinamik olarak $JAVA_HOME

export JAVA_HOME=$(/usr/libexec/java_home)

Daha sonra kabuğunuzu kapatın, yeni bir tane açın ve

echo $JAVA_HOME

Gibi bir şey göstermelidir

/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

Değilse , başlangıç ​​komut dosyalarınızdaki diğer JAVA_HOME atamalarını kaldırın. Bu başlangıç ​​komut dosyalarının .gizli oldukları ve *joker karakter kullanırken dahil edilmeyecekleri gibi başladığını unutmayın ; örneğin, ana dizininizin tüm dosyalarını grep etmek istiyorsanız, şunları yapmanız gerekir:

grep -s JAVA_HOME ~/.* --exclude=.bash_history

1

Karşılaştığım sorun, Eclipse'den değil, komut isteminden bir maven derlemesi yapabilmemdi. Eclipse'de benim için çalıştığım, çalışma yapılandırmasını JDK içindeki JRE klasörüne işaret etmek yerine onu değiştirmek yerine değiştirmem JDK klasörü sadece standartlara göre.Bu çözüm sizin için de işe yarayabilir, ancak tüm java yolları doğruysa, java ve javac pom.xml hedefinde bulunanla aynı sürümü gösteriyorsa bunu deneyin.


Bu benim sorunum ve çözümümdü.
Skychan

1

Dokku üzerinde bu sorunla karşılaştım, nedense JDK 1.7'yi seçiyordu

Bir system.propertiesdosya oluşturma ve ayarlama java.runtime.version=1.8sorunu çözdü. Dokku artık Java 8 sürümünü kullanıyor . Heroku'da JDK seçme

Daha önce hiç yapmam gerekmedi ...


İpucu hala çalışıyor. Dokku'daki Java sürümünü 11 olarak değiştirmek için çok arama yapmam gerekti. Çok teşekkür ederim.
Bay Vanderbilt

1

Camila Macedo tarafından belirtildiği gibi - derleyici eklentisi için java sürümünü açıkça işaret etmeniz gerekir. İlkbahar önyüklemesi için bunu bir sonraki mülkle yapabilirsiniz:

  <properties>
    <java.version>1.8</java.version>
    <maven.compiler.release>8</maven.compiler.release>
  </properties>

Evet, ayar maven.compiler.releaseMaven projemde düzeltildi.
Cortex

1

IntelliJ kullanarak başka bir (daha yüksek) JDK Sürümü kurmak zorunda kaldım. IDE yeniden başlatıldıktan sonra, her şey çalıştı ve hatta tüm bağımlılıklar çözüldü.


1
İntelliJ'i yeniden başlatmak benim için anahtardı. JAVA_HOME ortam değişkenini farklı java sürümüne işaret edecek şekilde güncelledim, ancak sistem değişkeninin mevcut CMD oturumunda yenilenmediği anlaşılıyor. Muhtemelen yeni Terminal oturumu oluşturmak yeterli olacaktır.
Ubeogesh

0

Bu soru açıkça Docker hakkında sormuyordu, ancak 1.9'u hedefleyen bir pom.xml dosyası olduğunda da aynı hatayı aldım ...

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.9</maven.compiler.source>
  <maven.compiler.target>1.9</maven.compiler.target>
</properties>

... ancak kendi başına "maven" belirterek bir Docker konteynerine karşı testler yapmaya çalıştı.

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven mvn -e test

Benim için düzeltme, tam olarak ihtiyacım olan sürümü hedeflemekti.

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven:3.5.2-jdk-9 mvn test

(Daha fazla bilgiyi buradan edinebilirsiniz .)


0

Windows makinesinde Java sürümünü geçici olarak ayarlayabilirsiniz.
Örneğin, sürümü Java 8 olarak değiştirmek için şu komutu çalıştırın cmd:

set JAVA_HOME=C:\\...\jdk1.8.0_65

0

Uyumlu 1.8 Jar Sürümlerini getirecek bir Maven Güncellemesi yapın ve daha sonra derleme yaparken, Execute ortamında JRE Sürümlerini Run Configurations'tan 1.8'e güncelleyin ve RUN'a basın


0

Eclipse IDE kullanıyorsanız Pencere menüsüne gidin ve tercihleri ​​seçin ve orada yüklü JRE'leri arayın ve projeyi oluşturmak için ihtiyacınız olan JRE'yi seçin


-4

Benim durumumda işe yarayan şudur:

pom.xmlEklentilerden birini açtım ve aşağıdaki gibi değiştirdim.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>

Her iki kaynak ve hedef etiketi düzenlemeden önce bunu 1.8değiştirdim 1.7ve işe yaradı.


Yaptığınız değişikliği anlıyor musunuz ya da değişikliği en iyisini umarak mı yaptınız?
Temel Reis

Her ikisi de. Projenin şu anda Java 1.7 sürümünde çalıştığını anlıyorum. Çalışmasını umarak yaptım.
VIJAYKUMAR REDDY ALAVALA
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.