Kelas JavaLaunchHelper diimplementasikan di ... libinstrument.dylib. Salah satu dari keduanya akan digunakan. Yang mana yang tidak ditentukan

274

Saya memutakhirkan ke Java 7u40 terbaru di MacOS X dan mulai mendapatkan pesan berikut di konsol saat meluncurkan aplikasi saya menggunakan Eclipse. Aplikasi ini berfungsi dengan baik tetapi saya ingin mencari tahu penyebab masalahnya dan mudah-mudahan perbaikan untuk itu.

objc[10012]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.

Adakah yang tahu mengapa pesan ini dicetak dan bagaimana cara memperbaikinya?

am
sumber
3
Meskipun ini mungkin merupakan opsi yang layak untuk memperbaiki masalah khusus ini - ini mungkin membuat Anda rentan terhadap kebocoran keamanan yang diperbaiki di u45 dan seterusnya.
Matthias Wenz
5
Hal yang sama terjadi dengan jdk1.8.0_05
neu242
28
Setahun telah berlalu dan bug ini masih mengganggu setiap pengembang Java yang menggunakan Mac (diverifikasi dengan jdk1.7.0_67 pada OS X 10.9.3). Memalukan. Adakah yang bisa dengan login yang sesuai silakan buka kembali bug ini bugs.java.com/bugdatabase/view_bug.do?bug_id=8021205 dan bugs.openjdk.java.net/browse/JDK-8025876
Tobia
8
Bug masih ada untuk jdk1.8.0_25. Apakah ini hanya pesan yang mengganggu atau masalah aktual?
Churk
7
Sebuah laporan bug dari masalah ini menunjukkan memperbaiki mungkin disertakan dengan rilis JDK9. Laporan bug yang sama mengatakan ini: "Bagi mereka yang terus bertanya tentang hal ini: Pesannya tidak berbahaya, tidak ada dampak negatif dari masalah ini karena kedua salinan kelas itu identik (disusun dari sumber yang persis sama). Ini murni masalah kosmetik. "
Jordan

Jawaban:

176

⚠️ Untuk JetBrains IntelliJ IDEA : Pergi ke Help -> Edit Custom Properties.... Buat file jika ia meminta Anda untuk membuatnya. Untuk menonaktifkan pesan kesalahan, tempel berikut ini ke file yang Anda buat:

idea_rt
idea.no.launcher=true

Ini akan berlaku pada restart IntelliJ.

Saya menggunakan Eclipse IDE Versi: Photon Release (4.8.0) Build ID: 20180619-1200 menjalankan macOS 10.14.6 (Mojave). Saya menambahkan baris idea.no.launcher=trueke <install location>/eclipse/configuration/config.inidan ini telah memecahkan masalah bagi saya.

karat
sumber
9
Bekerja untukku tanpa melakukan hal lain. Ini harus ditandai dengan benar.
trishulpani
7
Bekerja untuk saya di IDEA 2017.1.3 OSX 10.12.5 JRE 1.8
Daniel Rucci
2
OP menggunakan Eclipse, bukan IntelliJ. Jadi Anda memberi mereka petunjuk untuk mengubah pengaturan di editor yang salah (karenanya tidak ditandai sebagai benar).
Allison
2
Saya setuju dengan @ Allison - jika jawaban ini termasuk sarana untuk Eclipse itu akan sangat baik. Tetapi menjawab untuk IDE yang salah?
Daniel Soutar
1
Bekerja untuk IntelliJ 2018.3.3 CE, SDKMAN 5.7.3 + 337 dan versi OpenJDK "1.8.0_131" (Zulu 8.21.0.1-macosx).
David Lukac
117

Pada Oktober 2017, masalah ini sekarang diselesaikan di

daging kambing
sumber
4
Saya baru saja menginstal versi java "1.8.0_144", dan saya menghadapi masalah ini.
Reihan_amn
2
@Reihan_amn Anda akan, sampai membangun 152
muttonUp
1
Saya punya masalah dengan jdk1.8.65 tetapi jdk1.8.152 memperbaiki masalah ini. Terima kasih
Anshul
20
  1. Instal Java 7u21 dari: http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u21-oth-JPR

  2. Setel variabel-variabel ini:

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home
    export PATH=$JAVA_HOME/bin:$PATH
    
  3. Jalankan aplikasi Anda dan bersenang-senang :)

gotoalberto
sumber
3
Juga berfungsi untuk 1.8.0_92: # dalam .zshrc atau .bashrc export JAVA_HOME = / Library / Java / JavaVirtualMachines / jdk1.8.0_92.jdk / Konten / Ekspor rumah PATH = $ JAVA_HOME / bin: $ PATH
BvuRVKyUVlViVIc7
@Lichtamberg terima kasih, ini memperbaiki masalah saya di Java 8 mac osx. Saya telah menambahkan komentar Anda sebagai jawaban karena hampir semua jawaban lain berfungsi tetapi sekarang mutlak.
Pritesh Jain
1
@gotoalberto Bagaimana variabel lingkungan ini memecahkan masalah ketika kedua implementasi JavaLaunchHelper berada di direktori Home?
Prashant
1
@Lichtamberg Saya menggunakan sonar runner untuk mulai mengevaluasi cakupan kode aplikasi saya. Saya masih mendapatkan masalah yang sama dengan versi yang telah Anda sebutkan di atas. meskipun saya sudah mencoba banyak versi 8 dengan tambalan di mac os os saya. Tidak beruntung
Sathish
JANGAN LAKUKAN INI. Java 7u21 (selain dirilis pada tahun 2013 dan karena itu melewatkan empat tahun tambalan besar dan kecil) memiliki kerentanan eksekusi kode arbitrer: gist.github.com/frohoff/24af7913611f8406eaf3
mseebach
11

Salin komentar Paste @ Lichtamberg ke jawaban gotoalberto

Juga berfungsi untuk Java 1.8:

# in ~/.zshrc and ~/.bashrc

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home 
export PATH=$JAVA_HOME/bin:$PATH 

Ini memperbaiki masalah saya di java 8.

Pritesh Jain
sumber
4
Masih mengalami masalah di Android Studio (2.2p3) setelah mengedit ~ / .zshrc dan ~ / .bashrc
Mic Fok
tidak berfungsi untuk intellij, apakah ada langkah berikutnya setelah membuat / mengedit file-file ini?
xpto
5

Tidak yakin apakah ini penyebab masalahnya, tetapi saya mendapatkan masalah ini hanya setelah menginstal JVM Monitor .

Menghapus Instalasi JVM Monitor memecahkan masalah bagi saya.

paradigma
sumber
Sama di sini, JVM Monitor untuk Eclipse menyebabkan pesan (JBoss 7.1, JDK 1.8.0.X).
psychowood
Itu dimulai untuk saya ketika saya menginstal plugin eclEmma di eclipse
Nooblhu
Masalah yang sama disini. Monitor JVM yang tidak
diinstal
4

Rincian jawaban lainnya, ini adalah bug di JDK (hingga u45) yang akan diperbaiki di JDK7u60 - saat ini belum keluar, Anda dapat mengunduh b01 dari: https://jdk7.java.net/download. html

Ini beta, tapi perbaiki masalah itu untuk saya.

Matthias Wenz
sumber
11
Saya menginstal u60 tetapi masih mendapatkan Kelas JavaLaunchHelper diimplementasikan di /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/bin/java dan /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/ Beranda / jre / lib / libinstrument.dylib. Salah satu dari keduanya akan digunakan. Yang mana yang tidak ditentukan.
Rich Sadowsky
sepertinya diperkenalkan kembali antara b01 dan
b02
2
Ada referensi untuk bug? URL?
binarytemple_picsolve
3
Ini sebenarnya belum diperbaiki. Mereka mendukung perbaikan dari u60
Zanson
2

https://groups.google.com/forum/#!topic/google-appengine-stackoverflow/QZGJg2tlfA4

Dari apa yang saya temukan online, ini adalah bug yang diperkenalkan di JDK 1.7.0_45. Saya sudah baca itu akan diperbaiki di rilis Jawa berikutnya, tapi belum keluar. Seharusnya, itu diperbaiki di 1.7.0_60b01, tetapi saya tidak dapat menemukan tempat untuk mengunduhnya dan 1.7.0_60b02 memperkenalkan kembali bug.

Saya berhasil mengatasi masalah dengan kembali ke JDK 1.7.0_25. Mungkin bukan solusi yang Anda inginkan, tapi itu satu-satunya cara saya bisa membuatnya bekerja. Jangan lupa menambahkan JDK 1.7.0_25 di Eclipse setelah menginstal JDK.

Tolong JANGAN BALAS langsung ke email ini tetapi pergi ke StackOverflow: Kelas JavaLaunchHelper diimplementasikan di keduanya. Salah satu dari keduanya akan digunakan. Yang mana yang tidak ditentukan

Vinod Joshi
sumber
1

Untuk mengatasi masalah ini, saya menurunkan versi ke JDK versi 1.7.0_21 . kemudian saya menggunakan skrip bash kecil ini untuk mengubah versi yang saya gunakan.

function setjdk() {
  if [ $# -ne 0 ]; then
   removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
   if [ -n "${JAVA_HOME+x}" ]; then
    removeFromPath $JAVA_HOME
   fi
   export JAVA_HOME=`/usr/libexec/java_home -v $@`
   export PATH=$JAVA_HOME/bin:$PATH
  fi
 }

 function removeFromPath() {
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
 }

Setelah Anda memiliki skrip bash di file zshrc / bshrc Anda, panggil saja setJdk 1.7.0_21dan Anda siap melakukannya.

guy.gc
sumber
0

Nah, setelah beberapa perjuangan, apa yang berhasil bagi saya benar-benar menghapus JDK saat ini, seperti yang dijelaskan di sini :

sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk
sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane
sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
sudo rm -rf /Library/LaunchAgents/com.oracle.java.Java-Updater.plist
sudo rm -rf /Library/PrivilegedHelperTools/com.oracle.java.JavaUpdateHelper
sudo rm -rf /Library/LaunchDaemons/com.oracle.java.JavaUpdateHelper.plist
sudo rm -rf /Library/Preferences/com.oracle.java.Helper-Tool.plist

Kemudian instal 1.7.0_21, yang diunduh dari sini .

Sekarang java -versiondiminta:

java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b12)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)
demogar
sumber
0

Juli 2019

OSX Mojave 10.14.5 (18F132) IntelliJ 2019-1 Edisi Komunitas. Ini berhasil mengatur file idea.properties. Saya juga mengkonfigurasi JAVA_HOME yang menunjuk ke /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/

properti IntelliJ IDEA kustom

idea_rt idea.no.launcher = true

Joe V.
sumber
-2

Jika Anda menggunakan IntelliJ & Mac cukup buka Struktur proyek -> SDK dan pastikan ada Java yang terdaftar tetapi menunjuk ke sth seperti

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

Daripada rumah pengguna ...

kboom
sumber
-3

jdk-7u80-macosx-x64.dmg memperbaiki masalah ini.

wyxiloveu
sumber