クラスJavaLaunchHelperは2つの場所で実装されています


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)。2つのうちの1つが使用されます。どれが未定義か。

回答:


476

ここですべての詳細を見つけることができます:

  • IDEA-170117「objc:クラスJavaLaunchHelperは両方に実装されています...」実行コンソールの警告

アプリの起動時にIDEで使用されているJavaエージェントによってトリガーされたのは、 Mac上のJava古いバグです。このメッセージは無害であり、無視しても安全です。Oracle開発者のコ​​メント:

メッセージは無害であり、そのクラスの両方のコピーが同一であるため(まったく同じソースからコンパイルされる)、この問題による悪影響はありません。それは純粋に表面的な問題です。

この問題はJava 9およびJava 8 Update 152修正されています。

それがあなたを不快にさせるか、何らかの方法でアプリに影響を与える場合は(そうすべきではありません)、IntelliJ IDEAの回避策は、(| )をidea_rt追加idea.no.launcher=trueしてランチャーエージェントを無効にすることです。回避策は、IDEの次の再起動時に有効になります。 idea.propertiesHelpEdit Custom Properties...

ただし、IntelliJ IDEAランチャーエージェントを無効にすることはお勧めしません。グレースフルシャットダウン(終了ボタン)、スレッドダンプ、OSの制限を超えるコマンドラインが長すぎる問題の回避策などの機能に使用されます。無害なメッセージを非表示にするためだけにこれらの機能を失うことは、おそらく価値がありませんが、あなた次第。


6
idea_rtは何をしますか?それを無効にしない理由はありますか?
TTT 2017

8
優雅な終了、スレッドダンプを提供し、OSの制限を超える可能性のある長いクラスパスを処理します。特に、無害なメッセージを非表示にするためだけに、無効にすることはしません。
CrazyCoder 2017

16
私はJava 8アップデート152をインストールし、それは答えのように問題を解決します。ありがとうございました。
David Victor

3
152はいつOracle Java SEにプッシュされますか?
Yogesh 2017

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)

画像

そして、メッセージを展開して再度確認できます。

画像

PS:

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再インポートする前にフォルダを削除することをお勧めします。
リシャブ2017年

しかし、152にアップグレードするJava 8のアップデート151を実行しているMacOSのシエラのIDEA 2017年3月1日で私のためにこれやっていない作品は152 IDEAを再起動し、使用のアップデートに私のプロジェクトを設定した後、それを固定
akubotを

1

これは、Intellij IDEA 2017をインストールし、[設定]-> [ビルド、実行、デプロイメント]-> [デバッガー]に移動し、[JDK 1.3.x以前のクラシックVMを強制する]オプションを無効にすると発生しました。これでうまくいきます。


2
CrazyCoderが言及したように、idea_rtランチャーエージェントを無効にする必要がある場合もあります。idea.no.launcher = trueをidea.propertiesに追加します(ヘルプ|カスタムプロパティの編集...)。この後、必ずIDEを再起動してください。
Danny Guo

はい、カスタムプロパティの回避策は機能しますが、あなたの提案は私のシステムでは何もしません。答えを試してみましたか、つまり設定を切り替えます-JDK 1.3.x以前のオプションがどのように影響するかわかりませんか?私は、Java 8の上だ
デビッドビクター

私はカスタムプロパティを最初に試しましたが、うまくいきません。次に、これがJDK1.3.xソリューションを無効にすることがわかりました。IDEを再起動すると、すべてが正常に動作します。
Danny Guo

1
@DannyGuoこの問題はJavaエージェントが原因であり、デバッグモードではJavaエージェントが最新のJVMに使用されているため、デバッグモードでのみ問題が修正されましたが、ランチャーエージェントが実行されている場合は実行モードで問題が発生します。有効。
CrazyCoder 2017

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のダウンロードとインストール

次に新しいプロジェクトを作成するとき、または既存のプロジェクトを開くときは、新しいSDKのインストールを指すようにプロジェクト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.