我正在尝试让Eclipse v3.5(Galileo)在我的计算机上重新运行 - 我之前运行它没有任何问题,但现在我一直收到此错误:
必须提供Java运行时环境(JRE)或Java开发工具包(JDK)才能运行Eclipse。搜索以下位置后未找到Java虚拟机: C:\蚀\ JRE \ javaw.exe的 当前路径中的javaw.exe
我刚刚完成了JDK和SDK的全新安装。
我有Windows 7(x64)。
这是怎么回事?我该如何解决?
我无法运行任何ipconfig / tracert /或ping。
答案 0 :(得分:215)
默认情况下,Eclipse会尝试使用默认的“java.exe
”启动(PATH
引用的第一个<)
要记住三件事:
PATH
要更新。
2012年6月,jmbertucci评论:
我正在运行Windows 7 64位,并且安装了32位JRE。 我下载了Eclipse 64位,它寻找64位JRE。 因为我没有64位JRE,所以它会抛出错误,这是有道理的。
我访问了Java手动安装页面(不是您可以直接访问的)并安装了64位版本。请参阅“Java Downloads for All Operating Systems”。 这就是我所需要的一切。
2016年4月:Steve Mayne添加in the comments:
我必须编辑
eclipse.ini
文件以引用正确的Java路径 - 当PATH
中有值时,Eclipse根本不使用环境eclipse.ini
。
答案 1 :(得分:139)
只需复制此文件:
c:/Program Files/Java/jre(5,6,7..any version)/bin/javaw.exe
到Eclipse文件夹
* note仅针对Windows进行了测试
答案 2 :(得分:80)
关于仅设置 JAVA_HOME
的所有其他答案都不完全正确。 Eclipse does namely not consult the JAVA_HOME
。仔细查看错误消息:
...在您当前的路径中
它字面上说PATH
,而不是JAVA_HOME
。
右键单击我的电脑并选择属性(或按 Winkey + 暂停),转到选项卡< em>高级,单击系统变量按钮,在底部的系统变量列表中选择Path
(不,不< / strong> Classpath
),点击修改并将;c:\path\to\jdk\bin
添加到值的末尾。
或者,如果不存在,您还可以添加JAVA_HOME
环境变量并在PATH
中使用它。在同一个对话框中,点击新,然后添加JAVA_HOME
,其值为c:\path\to\jdk
。然后,您可以将;%JAVA_HOME%\bin
添加到Path
设置值的末尾。
答案 3 :(得分:35)
从控制面板打开Windows的系统属性,然后搜索环境变量部分:
现在,大多数Java工具都可以通过使用JAVA_HOME环境变量或在Path环境变量中查找java.exe / javaw.exe来查找Java安装。
答案 4 :(得分:24)
如果你下载64位版本的Eclipse;它将寻找64位版本的JRE。 如果你下载32位版本的Eclipse;它将寻找32位版本的JRE
我所做的是安装32位和64位版本的JRE。您可以从SUN Oracle站点获取该信息。 JAVA站点似乎自动安装了32位版本的Java。我猜这是因为网络浏览器。
答案 5 :(得分:10)
事实证明,我需要做的就是将'路径'更改为:
“C:\ Windows \ System32下; C:\视窗; C:\ Windows \ System32下\ WBEM; C:\ Program Files(x86)\ Java; C:\ Program Files (86)\爪哇\ jdk1.6.0_14 \ BIN“
做到了这一点:)
答案 6 :(得分:9)
我有64位的Windows 7,我和eclipse有同样的问题。为了让它工作,我不得不使用Internet Explorer(64位版本)下载java。这是让java安装64位版本的唯一方法。当我使用firefox安装java时,它会自动安装一个32位版本(如此愚蠢!)。 Eclipse 64位版本不会检测java 32位版本。
答案 7 :(得分:7)
不要依赖于windows path变量,因为它几乎在每次更新时都会被更改。例如。一个chrome(64位机器上的32位)java更新用32位JVM替换系统范围的64位JVM。另请注意,此条目必须是eclipse.ini中的最后一个,否则它不起作用,并且 - 如果另有说明 - JAVA_HOME变量不会被eclipse.exe评估。
即使你的JAVA_HOME和Path配置有效,他们也可能有这个问题,所以 最简单的方法是在你的eclipse安装文件夹中打开你的eclipse.ini
-vm
C:\ Program Files \ Java \ jdk1.7.0_71 \ bin \ javaw.exe
用你的jdk或jre的路径替换C:\ Program Files \ Java \ jdk1.7.0_71 \ bin \ javaw.exe
答案 8 :(得分:7)
解决方案简而言之:
右键单击“我的电脑”,单击属性,然后单击高级系统设置,弹出一个系统属性窗口,在高级选项卡下,选择环境变量,弹出环境变量窗口,在系统变量部分下,查找{{1变量,并编辑值,将其更改(版本; jre6,jre7等)到你正在使用的任何jre,例如我的:PATH
答案 9 :(得分:6)
在eclipse.ini
文件中,您需要更新VM的路径,使其指向计算机上安装javaw.exe
的相同位置。
答案 10 :(得分:6)
不要担心我也被这个错误和致命的毁了,当我得到它时,我是如此沮丧,即使我给予留下一个Android编程,但我明白了,只需首先复制此代码并粘贴你的系统变量在路径...
C:\ Program Files; C:\ Winnt; C:\ Winnt \ System32; C:\ Program 文件\爪哇\ JRE6 \ BIN \ javaw.exe的
现在从您的路径中复制“jre”文件夹,就像我在此路径下拥有“jre”一样
C:\Program Files\Java
并将其粘贴到您的eclipse文件夹中意味着放置了您的eclipse.exe文件。就像我在这个位置设置了我的日食
F:\Softwares\LANGUAGES SOFTEARE\Android Setup\eclipse
所以在eclipse文件夹中粘贴“jre”FOLDER。如果您有“jre6”,那么将其重命名为“jre”....并运行您的日食,您将得到解决方案......
//<<<<<<<<<<<<<<----------------------------->>>>>>>>>>>>>>>>>>>
其他解决方案:2
如果上述步骤无法解决问题,请按照以下步骤操作
-vmF:\ Softwares \ LANGUAGES SOFTEARE \ Android Setup \ eclipse Indigo版本32位\ jre \ bin / javaw.exe
现在这次你将开始eclipse它会搜索javaw.exe,所以它将搜索eclipse.ini中的路径,因为它现在在同一个文件夹中,因此它将启动javaw.exe并且它将开始工作。
如果您仍然有任何疑问,可以再次询问,只需查看我的个人资料并查找我的电子邮件ID即可。因为我喜欢堆栈溢出论坛,它让我成为程序员。*
答案 11 :(得分:5)
编辑我的eclipse.ini文件以更新新更新的JDK。以前我有jdk1.7.0_09并且现在更新到jdk1.7.0_80并且eclipse抛出了这个错误。
必须提供Java运行时环境(JRE)或Java Development Kit(JDK)才能运行Eclipse。没有 搜索以下内容后找到Java虚拟机 位置:C:/ Program Files / Java / jdk1.7.0_09 / bin / javaw
从
更新 eclipse.ini 后function f(value) {
this.var = value;
}
f.prototype.getValue = function(){
return this.var;
};
var instance1 = new f(42);
var instance2 = new f(0.01);
// now you have two instances with separate values:
console.log(instance1.getValue()); // shows "42"
console.log(instance2.getValue()); // shows "0.01"
到
-vm
C:/Program Files/Java/jdk1.7.0_09/bin/javaw
Eclipse工作正常。
答案 12 :(得分:3)
如果在环境变量中的PATH变量中添加C:\ Program Files \ Java \ jdk1.8.0_92 \ bin之后,eclipse会给出相同的错误
检查在eclipse文件夹中找到的eclipse配置设置文件,你必须在C:\ program Files
中看到相同的jdk路径我希望它有所帮助。
答案 13 :(得分:3)
在eclipse文件夹中创建一个批处理文件并写入:
eclipse -vm C:\Sun\SDK\jdk\jre\bin\javaw.exe
答案 14 :(得分:2)
如果您使用64位计算机中的默认更新更新Java版本(并且 32位浏览器),则java将安装32位版本。你应该找到64位java版本并安装它。
答案 15 :(得分:2)
当我遇到这样的问题时,在我的情况下,我使用x86 Eclipse安装了x64 JDK + JRE。所以安装x86 JDK + JRE解决了我的问题:)我还在eclipse文件夹中创建了jre
文件夹,并将bin
文件夹从我的本地路径C:\Program Files (x86)\Java\jre7
复制到..\eclipse\jre\
。
答案 16 :(得分:1)
首先感谢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开始工作了! Yaay!
答案 17 :(得分:1)
你得到这个错误的原因是因为eclipse需要启动JRE,它无法找到。它搜索的第一个位置是当前目录,然后是eclipse.ini文件,最后是系统路径。因此,如果它通过这三个地方中的任何一个找不到正确的jvm(位版本不同),它就会瘫痪
推荐的方法是编辑eclipse.ini文件,并通过在文件中包含以下内容告诉eclipse在哪里查找vm / jre:
-vm
[java.exe的路径](通常位于“C:\ Program Files \ Java \ jre7 \ bin”下)
P.S。要编辑eclipse.ini,您可能需要移动它,编辑然后将其粘贴回来
资料来源: - 维基
答案 18 :(得分:1)
那么这个答案是那些尝试了所有其他人仍然没有运气的人,可能是 Android工作室或 Eclipse
我通常会这样做其他一切都失败了。
set java_exe=
call lib\find_java.bat
if not defined java_exe goto :EOF
将其更改为
set java_exe=
&lt; java.exe文件的路径(可在jdk文件夹/ bin目录中找到)&gt;
找到行
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=
&lt; 相应swt.jar文件的路径,x86位于sdk \ tools \ lib \ x86,x64位于sdk \ tools \ lib \ x86_64 强>&GT; 答案 19 :(得分:1)
在环境变量中添加JRE PATH FOR Ex:C:\ Program Files \ Java \ jre5 \ bin 把“;”在每条路径之间。然后单击eclipse.exe它会工作.....
答案 20 :(得分:1)
有一种更简单的方法可以做到这一点。只需运行cmd x64。键入cmd x64到开始菜单中的搜索栏,你会发现它:)或者你应该设置程序文件的路径(x86)...例如C:\ Program Files(x86)\ Java \ jre6
答案 21 :(得分:1)
我上周有一个同事正是这个问题。他通过安装x64版本的Eclipse和x64 JDK来修复它。
编辑:他在安装必要的插件后重用了他的旧工作区,所以这不应该是一个大问题
答案 22 :(得分:1)
我也遇到过这个问题。我的情况如下:
在文字中:
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 Explorer,程序管理器, 任务管理器,控制面板等可以执行更新。
详情请见How to propagate environment variables to the system
在这里,我提供了一个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
答案 23 :(得分:1)
尝试将JAVA_HOME设置为正确的文件夹。谷歌在Windows中设置环境变量。
答案 24 :(得分:0)
一个问题是Eclipse-64bit版本与我们的Java安装之间的冲突是32位版本。这不容易解决,因为Java安装页面没有提供64位选项 - 它假定为32位并下载并安装32位版本。要解决此问题,请按照以下步骤操作:
jre7
复制C:/program files/Java/
文件夹并将其复制到我们的Eclipse安装文件夹中。jre
。安装Eclipse。
- launcher.appendVmargs -vm C:\ Program Files \ Java \ jdk1.7.0_79 \ jre \ bin \ javaw.exe -vmargs
答案 25 :(得分:0)
我对这个问题有一个简单的解决方案。我通过将eclipse.ini文件中的vm路径更改为最新的jre路径来解决此问题。
我关注了以下链接:https://youtu.be/lU_eb5Ki1kY
答案 26 :(得分:0)
首先转到计算机,然后是属性,然后是高级系统设置,然后是高级
(第3个菜单)
单击,然后单击底部的环境变量按钮。
要添加的环境变量中的路径:
C:\Program Files\Java\jdk1.8.0_102\bin\;C:\Program Files\Java\jdk1.8.0_102\lib\;
并且错误将消失。这是最好的一个。
另一种方法是将jre文件夹(C:\Program Files\Java\jre1.8.0_102
)复制到
E:\eclipse-jee-indigo-SR2-win32\eclipse
文件夹。然后错误就会消失。
答案 27 :(得分:0)
当我只复制javaw时,发生第二个错误,没有java.dll文件,当我复制它时,eclipse没有启动,我做的是我将整个jdk文件夹复制到eclipse文件夹并重命名为id到jre。问题解决了。
答案 28 :(得分:0)
我遇到了同样的问题。对我来说,解决它的简单方法是将JRE和eclipse安装为x86或x64。当他们的比特类型不匹配时,eclipse找不到它。所以,如果卸载并重新安装以使它们匹配并不是什么大问题,我会这样做。
我最终安装: Java Runtime Environment 1.7.0.3(64位)和 Eclipse Indigo(3.7)(64位)
然后就行了。
答案 29 :(得分:0)
我有同样的问题(Windows 7 x64,64位JDK,32位Eclipse),我找到了2个解决方案:
答案 30 :(得分:0)
将JAVA_HOME变量和广告JAVA_HOME / bin设置为evnrionment路径变量。
答案 31 :(得分:0)
JDK不会在默认路径中安装JVM。
除非你需要像ant一样运行外部工具,否则非JDK就足以让Eclipse运行。安装这样一个JVM的最简单方法是转到http://java.com并让它安装它想要安装的任何东西。
然后再次双击Eclipse二进制文件。
答案 32 :(得分:0)
检查窗口&gt;偏好&gt; Java&gt;已安装的JRE。确保那里有东西;如果没有,请添加一个。
您最近是否更新了JDK?
答案 33 :(得分:-1)
只需下载Java Runtime Environment(JRE)即可。这对我有用!