JavaLaunchHelper 클래스는 두 곳에서 구현됩니다.


291

오늘은 macOS Sierra에서 Intellij Idea를 업그레이드했으며 콘솔에서 응용 프로그램을 실행할 때이 오류가 발생합니다.

objc [3648] : 클래스 JavaLaunchHelper는 /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java (0x10d19c4c0) 및 /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/ 모두에서 구현됩니다. 목차 / 홈 /jre/lib/libinstrument.dylib(0x10ea194e0). 둘 중 하나가 사용됩니다. 어느 것이 정의되지 않았습니다.

답변:


476

모든 세부 정보는 여기에서 찾을 수 있습니다.

  • IDEA-170117 "objc : 클래스 JavaLaunchHelper가 둘 다에서 구현 됨 ..."경고 콘솔 실행

그것은의 자바 오래된 버그 Mac에서 자바 에이전트에 의해 트리거있어 응용 프로그램을 시작할 때 IDE에 의해 사용되는. 이 메시지는 무해하며 무시해도됩니다. 오라클 개발자의 의견 :

메시지는 양성이며, 해당 클래스의 두 사본이 동일하므로 (정확히 동일한 소스에서 컴파일 됨)이 문제점의 부정적인 영향은 없습니다. 순전히 외관상의 문제입니다.

문제가 해결됩니다자바 9 과에서 자바 8 업데이트 (152) .

짜증나거나 앱에 어떤 식 으로든 영향을 미치지 않는 경우 (그렇지 않아야 함) IntelliJ IDEA의 해결 방법은 ( | ) idea_rt에 추가 idea.no.launcher=true하여 실행기 에이전트 를 비활성화 하는 것 입니다. 해결 방법은 다음에 IDE를 다시 시작할 때 적용됩니다. idea.propertiesHelpEdit Custom Properties...

그래도 IntelliJ IDEA 런처 에이전트를 비활성화하지 않는 것이 좋습니다. 그것은 우아한 종료 (나가기 버튼), 스레드 덤프, OS 한계를 초과하는 너무 긴 명령 줄 문제와 같은 기능에 사용됩니다. 무해한 메시지를 숨기기 위해 이러한 기능을 잃어 버리는 것은 가치가 없지만 아마도 가치가 없습니다. 당신에게 달려 있습니다.


6
idea_rt의 기능은 무엇입니까? 비활성화하지 않는 이유는 무엇입니까?
TTT

8
그것은 우아한 종료, 스레드 덤프를 제공하고 OS 제한을 초과 할 수있는 긴 클래스 경로를 처리합니다. 특히 무해한 메시지를 숨기려는 이유 때문에 비활성화하지는 않습니다.
CrazyCoder

16
Java 8 업데이트 152를 설치하면 답변과 같은 문제가 해결됩니다. 감사합니다.
David Victor

3
Oracle Java SE를 통해 152가 언제 푸시됩니까?
Yogesh

1
Java 8 업데이트 191을 실행하는 IntelliJ CE 2018.2를 설치했습니다. 메시지가 여전히 있습니다.
Massimiliano Kraus

180

“이 메시지는 무해합니다”( @CrazyCoder의 답변 참조 )이므로 간단 하고 안전한 해결 방법은 IntelliJ IDEA 설정에 의해 콘솔에서이 윙윙 거리는 메시지를 접을 수 있다는 것입니다.

  1. 【기본 설정】-【편집기】-【일반】-【콘솔】-【포함 된 콘솔 콘솔】
    물론, [Find Action ...] ( cmd+shift+AMac의 경우) Fold console lines that contain을 사용하고보다 효과적으로 탐색 할 수 있습니다.
  2. 더하다 Class JavaLaunchHelper is implemented in both

영상

내 컴퓨터에서 밝혀졌습니다 : (LGTM : b)

영상

메시지를 펼쳐서 다시 확인할 수 있습니다.

영상

추신:

2017 년 10 월 기준으로이 문제는 이제 jdk1.9 / jdk1.8.152 / jdk1.7.161에서 해결되었습니다.
자세한 내용 은 @muttonUp의 답변 참조 )


13

Intellij Idea 2017을 사용하고 있으며 같은 문제가 발생했습니다. 나를 위해 문제를 해결 한 것은 단순히

  1. intelliJ에서 프로젝트를 닫습니다
  2. 기존 자원의 파일-> 새로 작성-> 프로젝트
  3. 외부 모델에서 가져 오기 사용 (있는 경우)
  4. 프로젝트를 다시여십시오.

5
close then open
Khoa

나는 여기에 답변으로 제공된 모든 솔루션을 시도했지만이 솔루션 만 나를 위해 일했습니다. .idea다시 가져 오기 전에 폴더를 삭제하는 것이 좋습니다 .
Rishabh

Java 8 업데이트 151을 실행하는 macOS Sierra의 IDEA 2017.3.1에서는이 기능이 작동하지 않았습니다. 그러나 152로 업그레이드하면 IDEA를 다시 시작하고 프로젝트가 업데이트 152를 사용하도록 설정 한 후에 문제가 해결되었습니다.
akubot

1

Intellij IDEA 2017을 설치하고 환경 설정-> 빌드, 실행, 배포-> 디버거 메뉴로 이동하여 "JDK 1.3.x 및 이전 버전 용 Force Classic VM"옵션을 비활성화했습니다. 이것은 나에게 효과적입니다.


2
CrazyCoder에서 언급 한 것처럼 idea_rt 런처 에이전트를 비활성화해야 할 수도 있습니다. idea.no.launcher = true를 idea.properties에 추가 (도움말 | 사용자 정의 특성 편집 ...). 이 후에 IDE를 다시 시작하십시오.
Danny Guo

예, 사용자 정의 속성 해결 방법이 작동하지만 제안 사항은 내 시스템에서 아무 것도 수행하지 않습니다. 답변을 시도해 보셨습니까, 즉 설정을 전환하십시오-사전 JDK 1.3.x 옵션이 어떤 영향을 줄 수 있는지 모르겠습니다. 저는 Java 8을 사용하고 있습니다.
David Victor

나를 위해 처음에는 사용자 정의 속성을 시도했지만 작동하지 않습니다. 그런 다음 JDK1.3.x 솔루션을 사용하지 않도록 설정했습니다. IDE를 다시 시작하면 모든 것이 잘 작동합니다.
Danny Guo

1
@DannyGuo는 문제가 Java 에이전트에 의해 발생하고 디버그 모드에서 최신 JVM에 어쨌든 Java 에이전트가 사용되므로 디버그 모드에서만 문제가 해결되었지만 시작 관리자 에이전트가 실행 중일 때 실행 모드에서 문제가 발생합니다. 가능.
CrazyCoder

0

다른 해결 방법을 찾았습니다 : libinstrument.dylib프로젝트 경로에서 제외하십시오 . 이를 수행하려면 환경 설정 -> 빌드, 실행 및 배치 -> 컴파일러 -> 제외 -> + 로 이동하여 오류 메시지의 경로로 파일을 추가하십시오.


0

이것은 몇 년 전의 문제였으며 이전에 프로젝트에서 1.7을 제외하여 Eclipse에서 문제를 해결했지만 최근에 설치 한 IntelliJ의 경우 다시 문제가되었습니다. 나는 그것을 고쳤다.

  1. JDK 제거 :

    cd /Library/Java/JavaVirtualMachines
    sudo rm -rf jdk1.8.0_45.jdk
    

    (내가 jdk1.8.0_45.jdk설치했다; 분명히 해당 폴더에 나열된 Java 버전을 제거해야합니다. 문제가되는 파일은 해당 폴더에 있으며 삭제해야합니다.)

  2. JDK 다운로드 및 설치 9 .

다음에 새 프로젝트를 만들거나 기존 프로젝트를 열 때 새 JDK 설치를 가리 키도록 프로젝트 SDK를 설정해야합니다. JavaVirtualMachines 폴더에 JDK 1.7이 설치되어있는 경우에도 여전히이 버그가 표시되거나 버그가 발생할 수 있습니다.


0

같은 오류로 업그레이드 Junit하고 해결했습니다.

org.junit.jupiter:junit-jupiter-api:5.0.0-M6

org.junit.jupiter:junit-jupiter-api:5.0.0
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.