[英]Eclipse - no Java (JRE) / (JDK) ... no virtual machine
我試圖讓 Eclipse v3.5 (Galileo) 在我的電腦上重新運行——我之前運行它沒有問題,但現在我不斷收到這個錯誤:
Java 運行時環境 (JRE) 或 Java 開發工具包 (JDK) 必須可用才能運行 Eclipse。搜索以下位置后未找到 Java 虛擬機:C:\eclipse\jre\javaw in.exe your javaw.exe當前路徑
我剛剛全新安裝了 JDK 和 SDK。
我有 Windows 7 (x64)。
這是怎么回事? 我如何解決它?
我無法運行任何 ipconfig / tracert / 或 ping。
默認情況下,Eclipse 將嘗試使用默認的“ java.exe
”(您的PATH
引用的第一個)啟動
要記住的三件事:
PATH
。2012 年 6 月, jmbertucci評論:
我運行的是 64 位 Windows 7,並且安裝了 32 位 JRE。 我下載了 Eclipse 64 位,它尋找 64 位 JRE。 因為我沒有 64 位 JRE,所以它拋出了錯誤,這是有道理的。
我轉到 Java 手冊安裝頁面(它不像您希望的那樣直接訪問)並安裝了 64 位版本。 請參閱“適用於所有操作系統的 Java 下載”。 這就是我所需要的。
2016 年 4 月: Steve Mayne 在評論中補充說:
我必須編輯
eclipse.ini
文件以引用正確的 Java 路徑 - 當eclipse.ini
有值時,Eclipse 根本不使用環境PATH
。
只需復制此文件:
c:/Program Files/Java/jre(5,6,7..any version)/bin/javaw.exe
到 Eclipse 文件夾
*注意僅針對 Windows 進行了測試
關於僅JAVA_HOME
所有其他答案都不完全正確。 Eclipse 即不查詢JAVA_HOME
。 仔細查看錯誤消息:
...在您當前的路徑中
它的字面意思是PATH
,而不是JAVA_HOME
。
右鍵單擊My Computer並選擇Properties (或按Winkey + Pause ),轉到選項卡Advanced ,單擊按鈕Environment Variables ,在底部的System Variables列表中選擇Path
(不,不是Classpath
),單擊Edit並添加;c:\\path\\to\\jdk\\bin
到值的末尾。
或者,如果不存在,您還可以添加JAVA_HOME
環境變量並在PATH
使用它。 在同一對話框中單擊New並添加值為c:\\path\\to\\jdk
JAVA_HOME
。 然后您可以將;%JAVA_HOME%\\bin
添加到Path
設置值的末尾。
從控制面板打開 Windows 的系統屬性並查找環境變量部分:
大多數 Java 工具現在可以通過使用 JAVA_HOME 環境變量或通過在 Path 環境變量中查找 java.exe / javaw.exe 來找到您的 Java 安裝。
如果您下載的是 64 位版本的 Eclipse; 它將尋找 64 位版本的 JRE。 如果您下載 32 位版本的 Eclipse; 它將尋找 32 位版本的 JRE
我所做的是安裝 32 位和 64 位版本的 JRE。 您可以從 SUN Oracle 站點獲得該信息。 JAVA 站點似乎會自動安裝 32 位版本的 Java。 我想那是因為網絡瀏覽器。
事實證明,我需要做的就是將“路徑”更改為:
"C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Program Files (x86)\\Java;C:\\Program Files (x86)\\Java\\jdk1.6.0_14\\bin ”
做到了:)
我有 Windows 7 64 位,我在 Eclipse 上遇到了同樣的問題。 為了讓它工作,我不得不使用 Internet Explorer(64 位版本)下載 java。 這是讓 java 安裝 64 位版本的唯一方法。 我用firefox安裝java的時候,自動安裝了32位版本(太白痴了!)。 並且 Eclipse 64 位版本不會檢測到 java 32 位版本。
解決辦法簡而言之:
右鍵單擊我的電腦,單擊屬性,然后高級系統設置,會彈出系統屬性窗口,在高級選項卡下,選擇環境變量,會彈出環境變量窗口,在系統變量部分下,查找PATH
變量,然后編輯值,將其(版本;jre6、jre7 等)更改為您正在使用的任何 jre,例如對於我的: C:\\Program Files\\Java\\jre7\\bin
不要依賴 windows 路徑變量,因為它幾乎在每次更新中都會發生變化。 例如,chrome(64 位機器上的 32 位)java 更新將系統范圍內的 64 位 JVM 替換為 32 位 JVM。 另請注意,此條目必須是 eclipse.ini 中的最后一個,否則它不起作用,並且 - 否則 - Eclipse.exe 不會評估 JAVA_HOME 變量。
即使你的JAVA_HOME和Path配置有效,他們也可能有這個問題,所以最簡單的方法是在你的eclipse安裝文件夾中打開你的eclipse.ini
-vm
C:\\Program Files\\Java\\jdk1.7.0_71\\bin\\javaw.exe
用你的 jdk 或 jre`s 路徑替換 C:\\Program Files\\Java\\jdk1.7.0_71\\bin\\javaw.exe
別擔心,我也被這個錯誤和致命的錯誤毀了,當我得到它時,我很沮喪,即使我打算離開一個 android 編程,但我明白了,首先復制這個代碼並粘貼到你的系統變量中在路徑下...
C:\\Program Files;C:\\Winnt;C:\\Winnt\\System32;C:\\Program Files\\Java\\jre6\\bin\\javaw.exe
現在從你的路徑復制“jre”文件夾,就像我在這個路徑下有“jre”一樣
C:\Program Files\Java
並將其粘貼到您的 eclipse 文件夾中意味着您的 eclipse.exe 文件所在的位置。 就像我在這個位置設置了我的日食
F:\Softwares\LANGUAGES SOFTEARE\Android Setup\eclipse
所以在 eclipse Folder 里面粘貼“jre” FOLDER 。 如果您有“jre6”,則將其重命名為“jre”……然后運行您的日食,您將獲得解決方案……
//<<<<<<<<<<<<<<----------------------------->>>>>>>>>>>>>>>>>>>
其他解決方案:2
如果上述步驟無法解決問題,請按照以下步驟操作
-vmF:\\Softwares\\LANGUAGES SOFTEARE\\Android Setup\\eclipse Indigo version 32 Bit\\jre\\bin/javaw.exe
現在,當您啟動 eclipse 時,它將搜索 javaw.exe,因此它將搜索 eclipse.ini 中的路徑,因為它現在位於同一文件夾中,因此,它將啟動 javaw.exe 並開始工作.
如果您仍有任何疑問,可以再次提問,只需訪問我的個人資料並找出我的電子郵件 ID。 因為我喜歡堆棧溢出論壇,這讓我成為了一名程序員。*
在eclipse.ini
文件中,您需要更新 VM 的路徑,使其指向機器上安裝javaw.exe
的同一位置。
編輯我的 eclipse.ini 文件以更新新更新的 JDK。 以前我有 jdk1.7.0_09,現在更新到 jdk1.7.0_80,eclipse 拋出了這個錯誤。
Java 運行時環境 (JRE) 或 Java 開發工具包 (JDK) 必須可用才能運行 Eclipse。 搜索以下位置后沒有找到Java虛擬機:C:/Program Files/Java/jdk1.7.0_09/bin/javaw
從更新eclipse.ini后,
-vm
C:/Program Files/Java/jdk1.7.0_09/bin/javaw
到
-vm
C:/Program Files/Java/jdk1.7.0_80/bin/javaw
Eclipse 工作正常。
在 eclipse 文件夾中創建一個批處理文件並在其中寫入:
eclipse -vm C:\Sun\SDK\jdk\jre\bin\javaw.exe
當我遇到這樣的問題時,就我而言,我安裝了 x64 JDK + JRE 和 x86 Eclipse。 所以安裝 x86 JDK + JRE 解決了我的問題 :) 此外,我在 eclipse 文件夾中創建了jre
文件夾,並將bin
文件夾從我的本地路徑C:\\Program Files (x86)\\Java\\jre7
到..\\eclipse\\jre\\
。
如果您在 64 位計算機(並且您有32 位瀏覽器)中使用默認更新更新您的 java 版本,java 將安裝 32 位版本。 您應該找到 64 位 java 版本並安裝它。
嘗試將您的 JAVA_HOME 設置為正確的文件夾。 谷歌用於在 Windows 中設置環境變量。
上周我有一個同事解決了這個問題。 他通過安裝 x64 版本的 Eclipse 和 x64 JDK 來修復它。
編輯:他在安裝必要的插件后重用了他的舊工作區,所以這應該不是什么大問題
您收到此錯誤的原因是 eclipse 需要一個 JRE 才能啟動,而它找不到。 它首先搜索的是當前目錄,然后是 eclipse.ini 文件,最后是系統路徑。 因此,如果它無法通過這三個地方中的任何一個找到正確的 jvm(位版本不同),它就會崩潰
推薦的方法是編輯 eclipse.ini 文件並通過在文件中包含以下行來告訴 eclipse 在哪里查找 vm/jre:
-vm
[java.exe 的路徑](通常在“C:\\Program Files\\Java\\jre7\\bin”下)
PS要編輯eclipse.ini,您可能需要移動它,編輯然后粘貼回來
來源:-維基
首先感謝YouYou的解決方案! 我嘗試了 YouYou 的回答( https://stackoverflow.com/a/14464653/801919 )。 最初,它對我不起作用。 以下是我需要采取的步驟以使其工作:
Choose the 32-bit download to use with a 32-bit browser.
因此,我下載了 32 位版本。Java was started but returned exit code=13
javaw.exe
。...Eclipse 開始工作了!!! 耶!
好吧,這個答案是給那些嘗試了所有其他方法但仍然沒有運氣的人的答案,這可能是Android Studio或Eclipse
我通常在其他一切都失敗時這樣做。
set java_exe=
call lib\\find_java.bat
if not defined java_exe goto :EOF
將它們更改為
set java_exe=
< java.exe 文件的路徑(可以在 jdk 文件夾/bin 目錄中找到) >
找到線條
rem Set SWT.Jar path based on current architecture (x86 or x86_64) for /f "delims=" %%a in ('"%java_exe%" -jar lib\\archquery.jar') do set swt_path=lib\\%%a
swt_path=
<相應 swt.jar 文件的路徑,對於 x86,它位於 sdk\\tools\\lib\\x86,對於 x64,位於 sdk\\tools\\lib\\x86_64 >有一種更簡單的方法可以做到這一點。 只需運行 cmd x64。 在開始菜單 ant 中輸入 cmd x64 搜索欄,您會找到它:) 或者,您應該設置程序文件的路徑 (x86) ...例如 C:\\Program Files (x86)\\Java\\jre6
只需在環境變量 Put ";" 中添加 JRE PATH FOR Ex: C:\\Program Files\\Java\\jre5\\bin 在每條路徑之間。 然后點擊eclipse.exe就可以了.....
我也遇到過這個問題。 我的情況如下:
在文本中:
HKEY_CURRENT_USER\Environment
Path REG_SZ %JAVA_HOME%\bin;C:\ProgramFiles\nodejs
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
JAVA_HOME REG_SZ C:\ProgramFiles\Java\jdk
Path REG_EXPAND_SZ C:\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\
WindowsPowerShell\v1.0\;C:\Program Files\Intel\DMIX;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Progra
m Files (x86)\Perforce;C:\ProgramFiles\010 Editor;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\ProgramFiles\
Git\cmd;C:\Program Files (x86)\Skype\Phone\
C:\Users\ssfang> echo %^JAVA_HOME% = "%^JAVA_HOME%" = %%JAVA_HOME%% %JAVA_HOME%
%JAVA_HOME% = "%^JAVA_HOME%" = %C:\ProgramFiles\Java\jdk% C:\ProgramFiles\Java\jdk
我發現他們的注冊表值Path
的類型不同,所以我通過以下命令檢查了路徑是否有效:
C:\Users\ssfang> where node java
C:\ProgramFiles\nodejs\node.exe
INFO: Could not find "java".
結果,我通過以下命令( Setx )重置了本地(當前用戶)環境:
C:\Users\ssfang> setx PATH %^JAVA_HOME%\bin;"C:\ProgramFiles\nodejs"
SUCCESS: Specified value was saved.
C:\Users\ssfang> reg query HKEY_CURRENT_USER\Environment /v Path
HKEY_CURRENT_USER\Environment
Path REG_EXPAND_SZ %JAVA_HOME%\bin;C:\ProgramFiles\nodejs
C:\Users\ssfang> where node java
C:\ProgramFiles\nodejs\node.exe
INFO: Could not find "java".
C:\Users\ssfang>echo %PATH%
C:\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Fi
les\Intel\DMIX;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Program Files (x86)\Perforce;C:\ProgramFile
s\010 Editor;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\ProgramFiles\Git\cmd;C:\Program Files (x86)\Skype\
Phone\;%JAVA_HOME%\bin;C:\ProgramFiles\nodejs
但是,在當前進程中,它無法將這些更改傳播到其他正在運行的進程。
但是,如果直接在注冊表編輯器中修改用戶環境變量,
對環境變量的這些修改不會立即導致更改。 例如,如果您在進行更改后啟動另一個命令提示符,則環境變量將反映以前(而不是當前)的值。 直到您注銷然后重新登錄后,更改才會生效。
要在不注銷的情況下實現這些更改,請向系統中的所有窗口廣播 WM_SETTINGCHANGE 消息,以便任何感興趣的應用程序(如 Windows 資源管理器、程序管理器、任務管理器、控制面板等)都可以執行更新。
請參閱如何將環境變量傳播到系統中的詳細信息
在這里,我給出了一個 powershell 腳本來做到這一點:
# powershell -ExecutionPolicy ByPass -File
# Standard, inline approach: (i.e. behaviour you'd get when using & in Linux)
# START /B CMD /C CALL "foo.bat" [args [...]]
# powershell -ExecutionPolicy ByPass -WindowStyle Hidden -File myScript.ps1
<#
Add-Type @'
public class CSharp
{
public static void Method(object[] first, object[] second)
{
System.Console.WriteLine("Hello world");
}
}
'@
$a = 1..4;
[string[]]$b = "a","b","c","d";
[CSharp]::Method($a, $b);
#>
<#
#http://stackoverflow.com/questions/16552801/how-do-i-conditionally-add-a-class-with-add-type-typedefinition-if-it-isnt-add
#Problem Add-Type : Cannot add type. The type name 'PInvoke.User32' already exists.
if (-not ("MyClass" -as [type])) {
add-type @"
public class MyClass { }
"@
}
p.s. there's no Remove-Type; see this answer for more on how to best work around this limitation:
http://stackoverflow.com/questions/3369662/can-you-remove-an-add-ed-type-in-powershell-again
I think it will be wanted when debugging.
It is much simpler to close a tab in Console and open new one in PowerShell_ISE.exe or close PowerShell.exe.
Or
Start-Job -ScriptBlock {
param([uri]$url,$OutputDir)
# download and save pages
Invoke-RestMethod $url | Out-File "$OutputDir\$($url.Segments[-1])" -Force
} -ArgumentList $link,$OutputDir
#>
if (-not ([System.Management.Automation.PSTypeName]'PInvoke.Program').Type)
{
$sig=@"
using System;
using System.Runtime.InteropServices;
using System.Text;
using System.Collections.Generic;
// The global namespace is the "root" namespace: global::system will always refer to the .NET Framework namespace System.
///P/Invoke (Platform Invoke)
namespace PInvoke
{
public static class User32
{
/// http://www.pinvoke.net/default.aspx/Constants/HWND.html
// public const IntPtr HWND_BROADCAST = new IntPtr(0xffff);
/// https://msdn.microsoft.com/en-us/library/windows/desktop/ms725497(v=vs.85).aspx
/// http://www.pinvoke.net/default.aspx/Constants/WM.html
public const UInt32 WM_SETTINGCHANGE = 0x001A;
// SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM) "Environment", SMTO_ABORTIFHUNG, 5000, &dwReturnValue);
/// https://msdn.microsoft.com/en-us/library/windows/desktop/ms644952(v=vs.85).aspx
/// If the function succeeds, the return value is nonzero.
[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SendMessageTimeout", SetLastError = true)]
public static extern uint SendMessageTimeout(IntPtr hWnd, uint Msg, int wParam, string lParam, SendMessageTimeoutFlags fuFlags, uint uTimeout, out int lpdwResult);
}
[Flags]
public enum SendMessageTimeoutFlags : uint
{
SMTO_NORMAL = 0x0,
SMTO_BLOCK = 0x1,
SMTO_ABORTIFHUNG = 0x2,
SMTO_NOTIMEOUTIFNOTHUNG = 0x8,
SMTO_ERRORONEXIT = 0x20
}
public class Program
{
public static void Main(string[] args)
{
//int innerPinvokeResult;
//uint pinvokeResult = User32.SendMessageTimeout(User32.HWND_BROADCAST, User32.WM_SETTINGCHANGE, 0, "Environment", SendMessageTimeoutFlags.SMTO_NORMAL, 1000, out innerPinvokeResult);
Console.WriteLine("Over!!!!!!!!!!!!!!!!!!!!!!!!!");
}
}
}
"@
Add-Type -TypeDefinition $sig
}
## [PInvoke.Program]::Main([IntPtr]::Zero);
$innerPinvokeResult=[int]0
[PInvoke.User32]::SendMessageTimeout([IntPtr]0xffff, [PInvoke.User32]::WM_SETTINGCHANGE, 0, "Environment", [PInvoke.SendMessageTimeoutFlags]::SMTO_NORMAL, 1000, [ref]$innerPinvokeResult);
setx setx [/s [/u [] [/p []]]] [/m]
/m Specifies to set the variable in the system environment. The default setting is the local environment
檢查窗口 > 首選項 > Java > 已安裝的 JRE。 確保那里有東西; 如果沒有,加一個。
您最近是否更新了 JDK?
JDK 不會在默認路徑中安裝 JVM。
除非你需要外部工具像 ant 一樣運行,否則非 JDK 足以讓 Eclipse 運行。 安裝此類 JVM 的最簡單方法是訪問http://java.com並讓它安裝它想要安裝的任何內容。
然后再次雙擊 Eclipse 二進制文件。
將 JAVA_HOME 變量和廣告 JAVA_HOME/bin 設置為 evnrionment 路徑變量。
我遇到了同樣的問題(Windows 7 x64、64 位 JDK、32 位 Eclipse),我找到了 2 個解決方案:
當我只復制javaw時,出現第二個錯誤,沒有java.dll文件,當我也復制它時,eclipse沒有啟動,我所做的是將整個jdk文件夾復制到eclipse文件夾並將id重命名為jre。 問題解決了。
一個問題是 Eclipse-64 位版本與我們的 Java 安裝是 32 位版本之間的沖突。 這不容易解決,因為 Java 安裝頁面沒有提供 64 位的選項 - 它假定為 32 位並下載並安裝 32 位版本。 要克服此問題,請按照以下步驟操作:
C:/program files/Java/
復制jre7
文件夾,復制到我們的Eclipse安裝文件夾中。jre
。安裝 Eclipse。
--launcher.appendVmargs -vm C:\Program Files\Java\jdk1.7.0_79\jre\bin\javaw.exe -vmargs
首先 go 到計算機然后屬性然后高級系統設置然后高級
(第三個菜單)
然后單擊底部的環境變量按鈕。
要在環境變量中添加路徑:
C:\Program Files\Java\jdk1.8.0_102\bin\;C:\Program Files\Java\jdk1.8.0_102\lib\;
並且錯誤將 go 消失。 這是最好的。
另一種方法是將 jre 文件夾 ( C:\Program Files\Java\jre1.8.0_102
) 復制到
E:\eclipse-jee-indigo-SR2-win32\eclipse
文件夾。 那么錯誤就會go消失。
我有一個簡單的解決方案來解決這個問題。 我通過將 eclipse.ini 文件中的 vm 路徑更改為最新的 jre 路徑來解決它。
我點擊了這個鏈接: https://youtu.be/lU_eb5Ki1kY
Go 到 Eclipse -->Windows--->Preferences 然后 go 到 Installed JRE 然后點擊 add 然后添加新的 JDK 路徑(jdk 安裝在你機器上的路徑)
然后點擊確定
它應該映射到 eclipse 並且可以工作。
注意 - 只有您映射的最新 JDK 才會在已安裝的 JRE 中顯示為打勾,類型為標准,名稱為默認值。
謝謝。
我有同樣的問題。 對我來說修復它的簡單方法是將 JRE 和 eclipse 安裝為 x86 或 x64。 當它們的位類型不匹配時,eclipse 找不到它。 因此,如果卸載並重新安裝以使它們匹配對您來說不是什么大問題,我會這樣做。
我最終安裝了:Java Runtime Environment 1.7.0.3(64 位)和 Eclipse Indigo (3.7)(64 位)
然后它就起作用了。
只需下載 Java 運行時環境 (JRE)。 這對我有用!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.