JNI共有ライブラリ(JDK)のロードに失敗しました


928

Eclipseを開こうとすると、ポップアップダイアログに次のように表示されます。

JNI共有ライブラリ "C:/JDK/bin/client/jvm.dll" `のロードに失敗しました。

これに続いて、Eclipseフォースは終了します。

ここでは、いくつかのポイントを挙げておきます。

  • そのパスに何かが存在するかどうかを確認しました。それは存在します。
  • 私のEclipseとJava SE Development Kitはどちらも64ビットです。私のシステムをチェックしたところ、64ビットを処理できます。
  • 私はGoogleとStack Overflowでこの問題を検索しましたが、見つかった唯一の答えは、32ビットバージョンのJDKとEclipseをダウンロードすることでした。

32ビットバージョンのダウンロードは、最後の手段としてのみやりたいことです。
この問題を解決するために何が提案されますか?


あなたの場合の問題は正確に何でしたか?
sjas

4
驚いたことに、コンピューターにJavaを5個ほどインストールしていました。それだけでなく、32ビットのEclipseを誤ってダウンロードしたことがわかりました。そこで、私はすべてのJavaをアンインストールし、Eclipseを削除し(Eclipseには「アンインストール」がありません)、私のマシン用にEclipse Classic 64ビットと64ビットJava をダウンロードしました(そのリンクのSPPの回答を参照)。
Mxyk

2
また、Eclipseの「削除」に問題がある場合(たとえば、手動またはコマンドプロンプトで何回削除してもフォルダーが消えない場合)は、コマンドプロンプトのセーフモードを使用して削除してみてください。なぜ私はこれをしなければならなかったのですか?
Mxyk

@MikeGates私もその問題があり、LockHunterを使用しました。不愉快。このツールをWindowsで実行するのは大変な作業です。
jcollum 2013年

Eclipse / Javaは64ビットに関しては最悪ですが、それは恥ずべきことです。私ができる最高のアドバイスは、32ビットのみに固執することです。時間のヒープを節約します。
2013

回答:


848

あなたは64-bitトリオが必要です:

  • 64-bit OS
  • 64-bit ジャワ
  • 64-bit 日食

説明:アプリケーションに読み込まれているネイティブコード(DLL)を想像してください。ここで、32ビット関数が64ビット関数などを呼び出したいと想像してください。配置とデータサイズなどすべて同じです。私はこれ以上何も言う必要がないと思います= P
imacake

@androiddeveloper複数のJavaバージョンが混在していると思います。64トリオのみを使用してみてください。
Grim

正解!私のラップトップはx64 OSで実行していますが、x86 JDKをインストールしました。x64 jdkをインストールするだけで、問題は解消されます。ありがとう。
Nguyen Minh Binh

この答えは実際には完全に正確ではありません。64ビットOSを使用している場合は、64ビットJDKおよび64ビットEclipseを実行する必要ありませ。64ビットOSは、32ビットJava + 32ビットEclipseのコンボを実行することもできます。どのような必要があります一致することはJRE / JDKとEclipseのbittednessです。
E-Riz 14

1
@Tarikはい、その2015年、そして快適にJBoss ToolsのVisual Page Editor(VPE)は、何年にもわたって64ビットのアップグレードを待っています。2番目のペアで、以下の「ワーキングペア」の回答を見てください。JBoss Tools-Plug-inは、Eclipseをダウンロードしたのと同じアーキテクチャにバインドされています。したがって、Eclipse(JBossToolsを含む)は32ビットでなければならず、JDKは32ビットでなければならず、OSは64ビットにすることができます。現在、64ビットEclipseはJBoss Toolsでは動作しません... Eclipseを使用して動作するJBossIDEというプロジェクトを覚えています。EclipseにJBossToolsをインストールする代わりに、これを使用する必要があります。JBossに恥をかき、Mozillaにも恥をかきます。
グリム

315

OS、JDK、Eclipseのペアリング:


  • 32-bit OS | 32-bit JDK | 32-bit Eclipse32ビットのみ
  • 64-bit OS | 32-bit JDK | 32-bit 日食
  • 64-bit OS | 64-bit JDK| 64bit Eclipse64ビットのみ

いくつかのJDKとJREをインストールしました。

それぞれがPATH変数に独自のエントリを持っていて、すべてが多かれ少なかれ機能していました。

PATH変数から判断すると、一部のインストールはまったく使用されなかったため、まったく役に立たなかった。もちろん、「非アクティブ」なJavaは、必要に応じてEclipse内から手動で参照できますが、そうしたことはないので、実際には必要ありませんでした。(少なくとも、当時はそう思っていました...)

私は混乱を片付け、現在のすべてのJavaをアンインストールし、JDK + JRE 1.7 64ビットのみをインストールしました。

その後、Eclipseの「インストール」の1つが失敗Failed to Load the JNI shared Libraryし、新しくインストールされたJDKの相対パスが指定された場所jvm.dllになりました。

失敗したEclipseは、私のすべてのIDEの中で唯一、64ビットのセットアップでは32ビットバージョンのままでした。

よく言及されるように、VM引数を追加してeclipse.iniも、私の場合は役に立たなかった(関連するJDK / JREが間違っていたため)。

また、このEclipseが32ビット版か64ビット版かを確認する方法もわかりませんでした(このEclipseの「インストール」が起動しないため、タスクマネージャーで検索できませんでした。セットアップしてからしばらく経ったので、バージョンも思い出せませんでした。

新しいJDKと古いJREを使用している場合も問題が発生java.lang.UnsupportedClassVersionErrorする可能性がありますが、IIRCのようです。


3
Path変数の最初の\ binのみを使用する必要があります
ekinnear

うーん、それは常に問題です... Oracleのドキュメントでは、最初のものだけを使用していると言われていますが、おそらく他の何かが変更されているか、すでに配置されて機能していたのでしょう。いつもそのような何か奇妙なもののようです。
ekinnear 2012

8
32ビットまたは64ビットのバージョンを確認するには、eclipse.iniを開いて、使用するequinoxランチャーを探します(例:org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502)
Steve Oh

私はこのコンボにエラーがありました。64ビットOS-32ビットJDK-32ビットEclipseで動作しません。私はこのコンボでそれを解決しました:64ビットOS-64ビットJDK-64ビットEclipse(64ビットのみ)。%PATH%変数は、64ビットのJavaバージョンを指すように更新されました。この変数は%PATH%変数の値に使用されるため、実際には%JAVA_HOME%が更新されています。
thanos.a 2014年

1
私の問題を解決したのは@ekinnearのコメントでした。windows / binフォルダーでJVM.dllを探していた理由はわかりませんが、適切なパスを配置することで解決したようです。
ジェームズ

267

eclipse.iniファイルに次の行が含まれていることを確認してください。

-vm
C:\path\to\64bit\java\bin\javaw.exe

eclipse.iniの例:

-startup
plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.2.R36x_v20101222
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
-vm
C:\Program Files\Java\jdk1.6.0_32\bin\javaw.exe
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m

OSとEclipseの両方を64ビットで使用するか、32ビットで使用して同じ構成を維持しeclipse.iniます。

あなたのeclipse.iniファイルは、Eclipseのフォルダに格納されています


9
これは問題を解決します。この-vm C:\Program Files\Java\jdk1.6.0_32\bin\javaw.exe行をeclipse.iniファイルに追加すると、問題なく起動しました。助けてくれてありがとう+1。
prolink007 2012

1
この作品は正常に動作しています。Javaのバージョンを確認し、コンソールでjava -versionを実行して、これがEclipseで使用されているバージョンかどうかを確認してください
jayesh kavathiya

2
私はこれをJava 6 SDKで行いましたが、うまくいきませんでした。私は自分のJava 7 SDKを指してもう一度試してみましたが、うまくいきました。私はWindows 8 64ビット、Java 6および7(両方64ビット)、およびEclipse Helios(32ビット)を使用しています。私はEclipse 64ビットをアンインストールして再インストールする準備ができていましたが、Java 7 SDKには32ビットアプリをより適切に実行するための新しいインテリジェンスが含まれているようです。
Ryan Shillington、2013年

9
これは機能します。ただし、iniファイルの先頭に-vmを配置する必要があります。少なくとも-vmargsまたは--launcher.xxxの前
pinkdawn

2
私が逃した非常に非常に重要なポイント。次のように使用した場合: "-vm C:\ ProgramFiles \ Java \ jdk1.6.0_32 \ bin \ javaw.exe"これは機能しません正しい方法 "-vm C:\ Program Files \ Java \ jdk1.6.0_32 \ bin \ javaw.exe "-vmの後の新しい行は非常に重要です。
スクールボーイ、


42

このエラーは、EclipseのアーキテクチャーがJavaランタイムのアーキテクチャーと一致しないことを意味します。つまり、一方が32ビットである場合、もう一方は64ビットではなく同じでなければなりません。

最も信頼できる修正は、eclipse.iniでJVMの場所を指定することです。

-vm
C:\Program Files (x86)\Java\jdk1.7.0_55\bin\javaw.exe

重要:これらの2行は-vmargsの前にある必要があります。引用符は使用しないでください。スペースは許可されます。


こんにちは、私はこの.iniセットアップでしばらく前から作業しています。アーキテクチャを64ビットに更新する必要がありますか、それとも異なるアーキテクチャの事実を無視できますか?Thx
Billyjoker

32

別のオプションは次のとおりです。

Eclipse.exeへのショートカットを作成します。ショートカットを開き、ターゲットを次のように変更します。

"C:\Program Files\eclipse\eclipse.exe" -vm "c:\Program Files\Java\jdk1.7.0_04\bin\javaw.exe"

インストールでは、場所が正しいEclipseインストールディレクトリと正しいjavaw.exeインストールディレクトリを指していることを確認してください。

(もちろん、EclipseとJavaの64/32ビットバージョンは同じである必要があります。)


良いオプションですが、上記のようにiniファイルに追加すると
うまくいく

2
.iniファイルを変更する必要はありません。JavaとEclipseには64ビットのコンボを使用してください
thanos.a 2014年

29

Sun JDKとJRockitの両方、32ビットと64ビットの両方など、Javaの複数のバージョンをインストールしていて、64ビットEclipse for Java EE(JUNO)の新規インストールでこの問題に遭遇しました。

何をしなかったしないで動作します。

Peter Raderによって提案された64ビットのトリオ:

64ビットOS(Windows 7)で64ビットEclipseを使用しています。

Sun JDK 7 64ビットがデフォルトのJavaバージョンであることを確認しました。コマンドライン(cmd.exe)から「java -version」と入力すると、Sun JDK 7 64ビットが返されました...

java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)

これで問題は解決しませんでした。

DID仕事を:

Jayesh Kavathiyaの提案に従って、eclipse.iniに-vmオプションを追加します。

以下をeclipse.iniに追加しました:

-vm
C:/apps/java/jdk7-64bit/bin/javaw.exe

注意:

自分のマシンにあるJDKまたはJREのさまざまなバージョンをアンインストールする必要はありませんでした。


JDKもアンインストールする必要はありませんでしたが、システムをクリーンアップして、将来のエラーの原因を一掃することにしました。VMの引数についても言及し、それらが明らかに私にとってうまくいかない理由を説明しました。本当に必要なものに応じて、システムのセットアップ方法を選択します。
sjas 2012年

私は両方のことをしなければなりませんでしたが、javaw.exe行を追加すると、とにかくすべてを64ビットにインストールするようになりました。それは、Androidに支払うべきカルマの処罰に依存します。
Josh

私は何年も開発を続けており、私のシステム(私が認識しているもの)に変更を加えることなく、Eclipseがこのエラーをスローします。-vmオプションを追加すると、他の設定を変更したり、何かをun / re / installしたりする必要なく、整理されます。
クノッソ

18

不足しているjvm.dllファイルの場合、ファイル内のdllファイルのパスを次のように指定できeclipse.iniます

-vm
C:\Progra~1\Java\jdk1.6.0_38\jre\bin\server\jvm.dll

ここでは、パスと二重引用符のスペースを削除することが重要です。引用符とスペースを削除するとうまくいきました。

誰かのお役に立てば幸いです。


1
これは、-vm javaw.exeの代わりに私を助けました
amj

11

同様の問題がありました。以下のようにして解決しました。

  • Eclipseを Program FilesProgram Files(x86)ではなく)に移動します。
  • 'path'環境変数から32ビットバージョンのJavaへのパスを削除します。

Javaの両方のバージョンがインストールされていますが、Eclipseは32ビットバージョンを使用しようとし続けました。


10

もちろん、JDKとEclipseの互換バージョンが必要ですが、eclipse.iniファイルに以下の行を追加する必要もあります。

-vm
yourdrive\java\bin

それらをeclipse.iniファイルの最初の2行にします。


7

多くの人々がすでに言及したように、これはEclipseJavaの両方で32ビット対64ビットの問題です。32ビットと64ビットを混在させることはできません。Eclipseは使用しないためJAVA_HOME、Eclipseを起動する前にPATHを変更して、適切なバージョンのJavaだけでなく、32ビットまたは64ビットの場合も使用していることを確認する必要があります(またはJayathが述べたようにINIファイルを変更します)。 。

会社の共有からEclipseをインストールする場合は、解凍するEclipseのバージョンを確認し、適切なProgram Filesディレクトリに解凍して、どれがどれであるかを追跡できるようにしてから、(( Windows)コントロールパネル->システムまたは設定PATH=/path/to/32 or 64bit/java/bin;%PATH%(システムやユーザー環境変数に設定したくない場合は、おそらくバッチファイルを作成します)。32ビットはプログラムファイル(x86)にあることに注意してください

わからない場合は、Eclipseを起動してください。エラーが発生した場合は、PATHをJavaの他の「ビット」バージョンに変更してから、再試行してください。次に、Eclipseディレクトリを適切なProgram Filesディレクトリに移動します。


このページは現在70万回表示されているので、明らかに問題です。1年後、IDEを実行するためだけに環境変数をいじる必要のない修正はないようです。
Ciaran Gallagher 14

6

または、JREとEclipse の同じ「ビット」バージョンを取得し、以下のターゲットを使用して新しいショートカットを作成します(インストールされているJREとEclipseの場所/パスを置き換えます)。

"C:\studio\eclipse.exe" -vm "C:\Program Files\Java\jre7\bin\server\jvm.dll" eclipse.vm="C:\Program Files\Java\jre7\bin\server\jvm.dll" java.home="C:\Program Files\Java\jre7" java.runtime.version=1.7.0

これでうまくいくはずです。


6

他の多くの複製と同様に、この問題を解決できます。EclipseとJDKが32ビットまたは64ビットの両方である必要があります。OSのアーキテクチャは重要ではありませんが、他のアーキテクチャは同じタイプです。


6

私の上の答えは私をとても誘惑しました、それで私はOS、EclipseJVMトリオとの可能なすべての組み合わせを空走させることにしました。とにかく、私の投稿を掘り下げて読んでいる人は誰でも、ホットスポットとして以下を確認してください(私はWindows 7ユーザーです)。

  1. プログラムファイルプログラムファイル(x86)は2つの異なるフォルダーであることを理解しています... x86は32ビットバージョンのプログラムを表し、前者は64ビットバージョンです。

  2. さまざまなビットネスバージョンとリリースバージョンで複数のバージョンのJavaがインストールされている場合、これは非常に多くのオープンソースIDE、マネージャー、管理コンソールで発生する可能性があり、eclipse.iniファイルでVM引数を直接設定するのが最善の方法です。そうしないと、Eclipseがおかしくなり、自分自身を検索してみますが、これは良くありません。


5

それを解決する簡単な方法の1つは、jreインストールされたJDKからEclipseインストールフォルダーにフォルダーをコピーすることです。コピー元のJDKがEclipseインストールと同じアーキテクチャであることを確認してください。

私は自分のマシンでEclipseとAppcelerator Titanium Studioの両方を実行しているため、マシンをそのように構成する必要がありました。Studioには32ビットJavaが必要ですが、Eclipseには64ビットが必要です。


私はずっと前に同じことをしましたが、eclipse-jee-juno-SR1-win32とJava6の場合、今回は動作しませんでした。jreへの絶対パスを使用してeclipse.iniも編集しましたか?
user77115 2012年

私はEclipse 64幅のjdk 7 64ビットも持っていますが、チタンの背が高く、jni共有DLLをロードできません。
realtebo 2013

Windowのクレイジーな自動更新のため、JAVAの更新があると、Eclipeの起動がブロックされます。上記のソリューションは、自動更新を気にせずに独立して作業する最も簡単な方法です。ありがとう!
ジョーザホイフ

4

はい、EclipseとJDKのバージョンが両方とも64ビットであることを確認してください。アンインストールされたJDKがすべて正しいことを確認し、Program Files(x86)ではなくProgram Filesにインストールします。少なくともそれで私の問題は解決しました。


4

PATH環境変数を確認するだけです。でマイコンピュータ - > プロパティ - > 高度なシステム設定- > 環境変数 - >(「PCのいくつかの名前左上のウィンドウ『のユーザー環境変数は、』」)だけでPATH変数を確認してください。存在しない場合は、次のように作成します-> C:\ Program Files(x86)\ Java \ jre7 \ bin <-

Eclipseを更新した後、同じ問題に直面しました。パスが64ビットバージョンを要求していることがわかりましたが、32ビットのdifパスがありました。参考になりました。PS:私は64ビットOS、32ビットJREおよび32ビットEclipseを使用しています。すべてうまくいきます:)


4

古い[JRE] [1]をすべてアンインストールしてから、最新の[JRE]をインストールする必要があります...同じ問題が発生しましたが、解決しました。私は:

Jre 6 32ビットをインストールすることをお勧めします。それは実際に動作します。


3

サイトから64ビットJVMをダウンロードして手動でインストールし、システムパス変数を更新しました。それで問題は解決しました。

  1. システムにインストールされているデフォルトのJVMは「C:\ Program Files
    (x86)\ Java \ jre7」にありました
  2. 手動でインストールされたJVMは「C:\ Program Files \ Java \ jre7」にインストールされ、このパテをシステムパス変数に更新した後、機能しました。

3

misterfrbに感謝します。Oracle10g Developer suiteをインストールしたばかりjvm.dllで、C:\DevSuiteHome_1フォルダ内のファイルを探していたため、Eclipseがこのエラーを出していることに気付きました(開発者スイートとともにJDKを再度インストールすることを選択したはずです)。

DevSuiteHomeの行をパス変数から削除し、64ビットの修正場所を追加した後jvm.dll(これが必要かどうかわからなかったため、これを試さなかったわけではありません)、Eclipseは再び機能しましたが、Developer suiteでも機能します。


3

単純ですが、64ビットOS、32ビットEclipse、およびJDK 32と64の両方がインストールされています... 64ビットJDKをアンインストールしたところ、Eclipseは正常に動作しています。


3

Java 6からJava 7にアップグレードした後も同じ問題がありました。Java6(64ビット)を削除し、Java 7(64ビット)を再インストールした後、Eclipseは機能しました。:)


3

-vmパラメータとその値をeclipse.iniの最初の2行に追加することが重要です

-vm C:\ Program Files \ Java \ jdk1.7.0_45 \ bin \ javaw.exe


3

特に1つのシステムで32ビットと64ビットのEclipseを使用したい場合は、このエラーの別の解決策を提供したいと思います。

Eclipseは、jreサブディレクトリにJRE / JDKがある場合、それを使用して起動します。(STSまたは他のEclipseベースのIDEもこの機能をサポートしています...)

解決策はmklink.exe、Windows Vistaまたはそれ以降のバージョンに存在するコマンドを使用してディレクトリジャンクションを作成することです(junction.exeは、Windows 2000 / XPでも同様の機能を提供します)
コマンドラインウィンドウを開き、次のコマンドを実行します。

mklink / j "$ ECLIPSE-HOME / jre" "$ JDK_or_JRE_home"

もちろん、Eclipseが64ビットWindows用である場合、のアーキテクチャはJDK/JRE同じでなければなりません。

想定:

  • Eclipse for windows x86_64d:\ devTool \ eclipseにインストールされます
  • JDK for windows x64C:\ Program Files \ Java \ jdk1.8.0にインストールされます

jreフォルダーを作成するコマンドは次のとおりです。

mklink / j "d:\ devTool \ eclipse \ jre" "C:\ Program Files \ Java \ jdk1.8.0"

ところで、ディレクトリジャンクションを削除してもファイルは削除されません。間違ったリンクを作成した場合は、ファイルエクスプローラーまたはrmdirコマンドを使用して削除できます。

rmdir "d:\ devTool \ eclipse \ jre"



2

64ビットトリオ全体を使用しても機能しない場合(Intellij IdeaでAndroidモニターを起動しているときにこの問題が発生しました)、Javaが期待するものとは逆に、おそらく間違ったjvm.dllが使用されています。次の手順に従ってください。

  1. JREディレクトリでjvm.dllを見つけます。 C:\Program Files\Java\jre7\server\bin\jvm.dll

  2. JDKディレクトリでjvm.dllを見つけます。 c:\Program Files\Java\jdk1.7.0_xx\jre\bin\server\

  3. jvm.dllJREディレクトリからJDKディレクトリにをコピーし、JDKのjvm.dllを上書きします。

念のため、バックアップを作成することを忘れないでください。Javaに関連するものをインストールまたはアンインストールする必要はありません。


2

同じことが私にも起こりました。64ビットのEclipseがありましたが、JDKは32ビットでした。だから私は64ビットバージョンをインストールしましたが、今は大丈夫です。


2

理由はわかりませんが、c:\ windowsディレクトリにjreをインストールし、windows \ system32ディレクトリ内のjava.exeとjavaw.exeをインストールしました。

明らかに、eclipse.iniファイルに-vmフラグを追加した後でも、これらのディレクトリが優先されていました。

ここから削除すると、問題が解決しました。



1

Eclipseのダウンロードページでは、「Windows 32ビット」や「Windows 64ビット」ではなく、「JRE 32ビット」または「JRE 64ビット」と記述してください。

以前に回答したように、JDEと互換性のある正しいバージョンを使用してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.