:::

eclipse開啟時發生無法載入「jvm.dll」問題的解決方法

9月 28, 2010 13 Comments Edit Copy Download

image

eclipse是知名的自由(也可以免費取用)的跨平台整合開發環境(Integreated Development Environment,簡稱IDE),主要用來開發Java,但他擁有強大的自訂能力,而使得eclipse也可以用來開發C/C++PHP或甚至是JavaScript。而許多IDE也是基於eclipse再擴充、發展而成,像是我目前主要用來開發JavaScript的Aptana Studio 2

問題敘述

eclipse能夠跨平台是基於Java運作環境的功勞,而他本身也是一個免安裝的檔案,理論上在良好設定的前提下,下載之後、解壓縮並直接開啟就能夠啟動。

最近為了再次找尋更完善的JavaScript IDE,所以我下載了Eclipse IDE for JavaScript Web Developers來使用。但沒想到下載完、解壓縮並開啟之後,出現了「Failed to load the JNI shared libray “D:\Program Files\Java\jre6\bin\client\jvm.dll”」的錯誤訊息,讓eclipse無法順利啟動。

這個問題顯然是我的Java環境參數哪裡弄錯了。我的電腦是Windows 7 64位元,安裝了Java的JDK 6.0.21,除了安裝路徑移至D磁碟分割之外,其他都跟預設一樣。

修改eclipse.ini,失敗

image

網路上可以找到兩種解決方法,一個是修改位於eclipse目錄底下的「eclipse.ini」設定檔。這個作法在「eclipse打开出现JVM terminated.Exit Code=-1错误的解决办法」這篇的後半部有提到,但我試著做卻很遺憾地沒能解決這個問題,而是需要用另一種方法來解決。

開啟eclipse時指定Java機器,成功

image

另一個方法是在開啟eclipse的時候,同時指定正確的Java虛擬機器路徑作為參數。作法如下:

  1. 找到你Java虛擬機器的路徑。以我的電腦為例子,因為Java安裝到D:\Program Files\裡面去了,所以路徑為「D:\Program Files\Java\jdk1.6.0_21\bin\javaw.exe
  2. 為「eclipse.exe」建立捷徑「eclipse.exe - 捷徑」,名稱可以隨意修改。
  3. 在捷徑上按右鍵,進入「內容」。
  4. 在「捷徑」分頁中找到「目標」欄位。
    image
  5. 在目標欄位資料後面加上「-vm "D:\Program Files\Java\jdk1.6.0_21\bin\javaw.exe"」,參數即是第一步中查詢的Java虛擬機器的路徑。舉例來說,原本的資料為「"D:\Program Files\eclipse\eclipse.exe"」,現在改為「"D:\Program Files\eclipse\eclipse.exe" -vm "D:\Program Files\Java\jdk1.6.0_21\bin\javaw.exe"」。
  6. 點擊捷徑,開啟eclipse。

image

開始使用eclipse吧!


結語

這其實是我第三次還是第四次遇到同樣的問題,而我卻每次都還是上網去找解決方法,找得灰頭土臉的才得到每次都一樣的解決方法。所以在此特地把這個方法寫在Blog,希望自己下次不要再這麼辛苦了。

題外話,Eclipse IDE for JavaScript Web Developers的JavaScript Editor在Aptana當中已有內建,而且也沒有Aptana JS Editor好用,著實讓人失望。下次有機會我在來分析一下JavaScript IDE的優缺點吧。

總共13 則留言 ( 我要發問 , 隱藏留言 顯示留言 )

  1. Sorry, it doesn't work for me.....

    有人說,再裝一份 64bit 的JDK就行了,試了果然就行了,也不必再加您的 commandline argument^^

    回覆刪除
  2. 原來如此,我的JDK似乎是32 bit的才會造成這樣的緣故嗎?
    感謝你的說明

    回覆刪除
  3. 剛剛在建置環境的時候也遇到這個問題
    所以搜尋到您的網誌了

    我說明一下我的情況
    我是win7 64bit
    jdk安裝的是64bit的
    一開始下載的eclipse是32bit的
    執行就遇到此情形,我還以為我環境變數忘記設定,但其實是有設定的

    隨後下載64bit的eclipse就沒有出現這種狀況了

    所以應該是jdk與eclipse的bit版本不同,才產生這種問題的

    回覆刪除
  4. 沒錯,我也遇到類似的情形,今天解決了,應該是jdk跟eclipse都要相同版本才行。

    我win7 64,打算用eclipse開發android的。

    剛開始我jdk跟eclipse都是64的,順利啟動了eclipse,但無法安裝android sdk,a-sdk說我沒裝jdk,但我明明裝了64的jdk,找了很久安裝a-sdk的方法,後來改換32的jkd,a-sdk就可以裝了,但又變成eclipse抓不到javaw,即使改了路徑也會有error code,又是因為我的eclipse是64的,最後通通換成32的就沒問題了。

    結論android sdk應當是32的,所以jdk跟eclipse都得配合,繞了一大圈才發現原來是這樣。:P

    回覆刪除
  5. 喔喔,要配合jdk跟Eclipse的版本啊
    感謝以上兩位精采的解析

    回覆刪除
  6. 丁…謝謝您,幫了一個大忙
    送你一個讚!

    回覆刪除
  7. 謝啦 最近剛裝64bit JDK_1.7.0.51遇到一樣問題 捷徑連回舊版就好了 忙了一個上午 eclipse又回來了

    回覆刪除
  8. To 8樓匿名:

    恭喜你。我最近都使用NetBeans,捨棄Eclipse啊XD

    回覆刪除
  9. 謝謝大大,
    按照您所說的設定,
    果然解決問題,
    不過我又出現另一個問題,
    也就是出現下面的訊息。

    我上網查了一下,
    原來是因為JDK跟Eclipse的版本不同所造成的,
    我的JDK是用32-bit,
    而Eclipse是用64-bit的,
    去下載64-bit的JDK,
    順利解決問題了,
    參考解答:http://goo.gl/q2VbS8

    Java was started but returned exit code=13

    C:\Program Files (x86)\Java\jre7\bin\javaw.exe

    -Xms40m

    -Xmx512m

    -XX:MaxPermSize=256m

    -jar C:\Program Files\Eclipse-SDK-4.2-win32-x86_64\eclipse\\plugins/org.eclipse.equinox.launcher_1.30v20120522-1813.jar

    -os win32

    -ws win32

    -arch x86_64

    -showsplash C:\Program Files\Eclipse-SDK-4.2-win32-x86_64\eclipse\\plugins\org.eclipse.platform_4.2.0.v201206081400\splash.bmp

    -launcher C:\Program Files\Eclipse-SDK-4.2-win32-x86_64\eclipse\eclipse.exe

    -name Eclipse

    --launcher.library C:\Program Files\Eclipse-SDK-4.2-win32-x86_64\eclipse\\plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v201205221813\eclipse_1503.dll

    -startup C:\Program Files\Eclipse-SDK-4.2-win32-x86_64\eclipse\\plugins/org.eclipse.equinox.launcher_1.30v20120522-1813.jar

    --launcher.overrideVmargs

    -exitdata 1e30_5c

    -vm C:\Program Files (x86)\Java\jre7\bin\javaw.exe

    -vmargs

    -Xms40m

    -Xmx512m

    -XX:MaxPermSize=256m

    -jar C:\Program Files\Eclipse-SDK-4.2-win32-x86_64\eclipse\\plugins/org.eclipse.equinox.launcher_1.30v20120522-1813.jar

    回覆刪除
  10. To SHIH-CHIEH,

    謝謝你提供的建議!

    回覆刪除
  11. Jdk裝的是x86,Eclipse就要裝x86,同理JDK裝X64,Eclipse就要裝X64

    回覆刪除
  12. ​To 月色,

    感謝您精闢的解說。

    回覆刪除