我正在尝试让Eclipse v3.5 (Galileo)在我的计算机上重新运行-我以前运行过,没有问题,但现在我一直得到这个错误:

要运行Eclipse,必须提供Java运行时环境(JRE)或Java开发工具包(JDK)。在搜索以下位置后没有发现Java虚拟机: C: \ eclipse \ jre \ javaw.exe javaw.exe在当前路径

我刚刚重新安装了JDK和SDK。

我用的是Windows 7 (x64)。

这是怎么回事?我该怎么解决呢?

我不能运行任何ipconfig / tracert /或ping。


尝试将JAVA_HOME设置为正确的文件夹。谷歌用于设置Windows环境变量。


Check Window > Preferences > Java >已安装的jre。确保那里有东西;如果没有,添加一个。

您最近更新了JDK吗?


JDK不会在默认路径下安装JVM。

除非您像ant一样需要外部工具来运行,否则非jdk就足以让Eclipse运行。安装这样的JVM最简单的方法是访问http://java.com,让它安装它想安装的任何东西。

然后再次双击Eclipse二进制文件。


从控制面板打开Windows的系统属性,找到环境变量部分:

添加一个JAVA_HOME条目,指向JDK安装的目录(例如C:\Program Files\Java\ jre6) 找到Path条目并将以下内容添加到末尾;%JAVA_HOME%\bin 好的,这些变化 重新启动eclipse,使其知道新环境

大多数Java工具现在都能够通过使用JAVA_HOME环境变量或在Path环境变量中查找Java .exe / javaw.exe来找到您的Java安装。


设置JAVA_HOME变量和ad JAVA_HOME/bin为环境路径变量。


关于只设置JAVA_HOME的所有其他答案都不完全正确。Eclipse也就是不咨询JAVA_HOME。仔细查看错误消息:

...在当前路径中

它字面上说的是PATH,而不是JAVA_HOME。

右键单击“我的电脑”,选择“属性”(或按Winkey+暂停),进入“高级”页签,单击“环境变量”按钮,在底部的“系统变量”列表中选择“路径”(不,不是“Classpath”),单击“编辑”,将“c:\ Path \to\jdk\bin”添加到值的末尾。

或者,如果没有,也可以添加JAVA_HOME环境变量,并在PATH中使用它。在同一个对话框中单击New并将值为c:\path\的JAVA_HOME添加到\jdk。然后您可以将;%JAVA_HOME%\bin添加到Path设置值的末尾。


上周我的一位同事也遇到了同样的问题。他通过安装x64版本的Eclipse和x64 JDK来解决这个问题。

编辑:在安装必要的插件后,他重新使用了他的旧工作区,所以这应该不是什么大问题


结果证明,我所需要做的就是将“路径”更改为:

“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 x64, 64位JDK, 32位Eclipse),我找到了2个解决方案:

安装64位版本的Eclipse(通过点击下载页面上的“Development Builds”选项卡找到)。 安装32位版本的JDK


Eclipse将在默认情况下尝试使用默认的“java.exe”(由PATH引用的第一个)启动。

要记住三件事:

"Installing" a JRE or a JDK can be as simple as unzipping or copying it from another computer: there is no special installation steps, and you can have as many different JVM versions (1.4, 5.0, 6.0...) as you want, "installed" (copied) almost anywhere on your disk. I would recommend to always run Eclipse with the lastest JRE possible (to benefit from the latest hotspot evolutions). You can: Reference that exact JRE path in your eclipse.ini. Copy any JRE of your in your <eclipse>/jre directory. In both cases, no PATH to update. The JVM you will reference within your Eclipse session is not always the one used for launching Eclipse because: You only need a JRE to launch Eclipse, but once Eclipse launched, you should register a JDK for your projects (especially for Java sources and debugging purposes, also in theory for compilation but Eclipse has its own Java compiler) Note: You could register just a JRE within Eclipse because it is enough to run your program, but again a JDK will allow for more operations. Even though the default registered Java in Eclipse is the one used to launch the session, you can want to register an older SDK (including a non-Sun one) in order to run/debug your programs with a JRE similar to the one which will actually be used in production.


2012年6月,jmbertucci评论道:

我运行的是64位的Windows 7,并且安装了32位的JRE。 我下载了一个64位的Eclipse 64位JRE。 因为我没有64位JRE,所以它抛出了错误,这是有道理的。 我转到Java手动安装页面(不像你想的那样直接访问),安装了64位版本。参见“适用于所有操作系统的Java下载”。 这就是我所需要的。


2016年4月:史蒂夫·梅恩在评论中补充道:

我必须编辑eclipse.ini文件以引用正确的Java路径- 当Eclipse .ini中有值时,Eclipse根本不使用环境PATH。


有一种更简单的方法。只需运行cmd x64。输入cmd x64在开始菜单中搜索栏,你会找到它:)或者,你应该设置程序文件的路径(x86)…例如C:\Program Files (x86)\Java\jre6


如果你下载了64位版本的Eclipse;它会查找64位版本的JRE。 如果你下载了32位版本的Eclipse;它会查找32位版本的JRE

我所做的就是同时安装32位和64位版本的JRE。你可以从SUN Oracle网站上得到。JAVA站点似乎会自动安装32位版本的JAVA。我想这是因为网络浏览器。


我用的是64位的windows 7,我用eclipse时也遇到了同样的问题。为了让它工作,我必须使用internet explorer(64位版本)来下载java。这是让java安装64位版本的唯一方法。当我用firefox安装java时,它自动安装了32位版本(太蠢了!)Eclipse 64位版本不会检测java 32位版本。


只需在环境变量中添加JRE PATH FOR Ex: C:\Program Files\Java\jre5\bin 把“;”放在每条路径之间。然后点击eclipse.exe,它将工作.....


在eclipse.ini文件中,需要更新VM的路径,使其指向机器上安装javaw.exe的同一位置。


在eclipse文件夹中创建一个批处理文件,并在其中写入:

eclipse -vm C:\Sun\SDK\jdk\jre\bin\javaw.exe

看到 http://wiki.eclipse.org/FAQ_How_do_I_run_Eclipse%3F


我也有同样的问题。对我来说,解决这个问题的简单方法是将JRE和eclipse同时安装为x86或x64。当他们的位类型不匹配时,eclipse找不到它。所以,如果这不是一个大问题,你卸载和重新安装,以使他们匹配,我会这样做。

我最终安装了: Java运行时环境1.7.0.3(64位)和 Eclipse Indigo(3.7)(64位)

这样就可以了。


简单的解决方案:

右键单击我的电脑,点击属性,然后高级系统设置,系统属性窗口将弹出,在高级选项卡下,选择环境变量,环境变量窗口将弹出,在系统变量部分下,寻找PATH变量,并编辑值,更改它(版本;jre6,jre7等)到任何你正在使用的jre,例如我的:C:\Program Files\Java\jre7\bin


别担心,我也被这个错误和致命的破坏,当我得到它,我是如此沮丧,甚至我是给离开一个android编程,但我得到了它,简单地首先复制这段代码,并粘贴在你的系统变量下路径…

C:\程序文件;C:\Winnt;C:\Winnt\System32;C:\程序 Files\Java\jre6\bin\javaw.exe

现在从你的路径复制“jre”文件夹,就像我在这个路径下有“jre”一样

            C:\Program Files\Java

并将其粘贴到eclipse文件夹中意味着放置eclipse.exe文件的位置。比如我在这个位置设置了日食

    F:\Softwares\LANGUAGES SOFTEARE\Android Setup\eclipse

所以在eclipse文件夹中粘贴jre文件夹。如果您有“jre6”,则将其重命名为“jre”....运行你的eclipse,你会得到解决方案…

   //<<<<<<<<<<<<<<----------------------------->>>>>>>>>>>>>>>>>>>                 

其他方案:2

如果上述步骤无法解决问题,请执行以下步骤

从您的Java路径(如C:\Program Files\Java\jre6*)复制文件夹“jre” 等,并将其粘贴到您的eclipse目录(Where is your eclipse 可用) 打开eclipse。ini文件。 像这样更改javaw.exe文件的目录

-vmF:\Softwares\LANGUAGES SOFTEARE\Android Setup\eclipse Indigo version 32 Bit\jre\bin/java .exe

现在,当你启动eclipse时,它将搜索javaw.exe,所以它将搜索eclipse.ini中的路径,因为它现在在同一个文件夹中,它将启动javaw.exe,它将开始工作。

如果你还有任何疑问,你可以再问一次,只要上我的个人资料,找到我的电子邮件id。因为我喜欢堆栈溢出论坛,它让我成为了一名程序员


只需要复制这个文件:

c:/Program Files/Java/jre(5,6,7..any version)/bin/javaw.exe

到Eclipse文件夹

*注仅测试Windows


当我遇到这样的问题时,在我的情况下,我用x86 Eclipse安装了x64 JDK + JRE。所以安装x86 JDK + JRE解决了我的问题:)我还在eclipse文件夹中创建了JRE文件夹,并将bin文件夹从我的本地路径C:\Program Files (x86)\Java\jre7复制到..\eclipse\ JRE \。


您得到这个错误的原因是因为eclipse需要JRE来启动,而它找不到JRE。它搜索的第一个位置是当前目录,然后是eclipse.ini文件,最后是系统路径。因此,如果它不能通过这三个地方中的任何一个找到正确的jvm(位版本不同),它就会停止运行

推荐的方法是编辑eclipse.ini文件,并告诉eclipse在哪里查找vm/jre,通过在文件中包含这一行:

虚拟机 [Java .exe的路径](通常在“C:\Program Files\Java\jre7\bin”下)

注:要编辑eclipse.ini,您可能需要移动它,编辑然后粘贴回来

来源:维基百科


64位操作系统—> 64位Java、64位Eclipse 32位操作系统—> 32位Java、32位Eclipse

如果您在64位计算机中使用默认更新更新Java版本(并且您有32位浏览器),Java将安装32位版本。您应该找到64位java版本并安装它。


只需下载Java运行时环境(JRE)。这对我很管用!


首先感谢悠悠提出的解决方案!我尝试了YouYou (https://stackoverflow.com/a/14464653/801919)的回答。起初,它对我不起作用。以下是我需要采取的步骤:

Initially, I did not have Java installed on my new machine. So, I had to install that (downloaded from: http://java.com/en/download/manual.jsp). I am running 64-bit OS. But, while downloading, I got the message which could help me in choosing which version of Java to download: Choose the 32-bit download to use with a 32-bit browser. Hence, I downloaded 32-bit version. Then, I followed the procedure mentioned in https://stackoverflow.com/a/14464653/801919, hoping to get the solution. I got some other error: Java was started but returned exit code=13 Then, I installed 64-bit version of Java. Copied javaw.exe from that version.

...Eclipse开始工作了!!Yaay !


好吧,这个答案是给那些尝试了所有其他人仍然没有运气的人,可能这是Android工作室或Eclipse,我通常在其他一切失败时这样做。

找到你的Android sdk文件夹,用文本编辑器打开Android .bat文件 你会在文件的开头找到一些这样的命令,

设置java_exe =

叫lib \ find_java.bat

如果没有定义java_exe goto:EOF

更改为 设置java_exe= < java.exe文件的路径(可以在JDK文件夹/bin目录中找到)> 找到线条

rem根据当前架构设置SWT.Jar路径(x86或x86_64) 对于/f "delims=" %%a in ('"%java_exe%" -jar lib\archquery.jar'),设置swt_path=lib\%%a

将其替换为set swt_path=<您各自的swt.jar文件的路径,对于x86,它是在sdk\tools\lib\x86,对于x64,它是在sdk\tools\lib\x86_64> 保存并关闭文件,现在您就可以开始了。


不要依赖windows path变量,因为它几乎在每次更新中都会更改。例如,chrome(64位机器上的32位)java更新将全系统64位JVM替换为32位JVM。还要注意的是,这个条目必须是eclipse.ini中的最后一个条目,否则它将不起作用,并且-如前所述- eclipse.exe不会计算JAVA_HOME变量。

即使你的JAVA_HOME和路径配置有效,他们可能有这个问题,所以 最简单的方法是打开eclipse安装文件夹中的eclipse.ini

虚拟机 C:\Program Files\Java\ jdk1.7.0_71 \ bin \ javaw.exe

将C:\Program Files\Java\ jdk1.7.0_71\bin\javaw.exe替换为jdk或jre的路径


当我只复制javaw时,出现了第二个错误,没有java.dll文件,当我也复制它时,eclipse没有启动,我所做的是,我将整个jdk文件夹复制到eclipse文件夹,并将id重命名为jre。问题解决了。


编辑eclipse.ini文件以更新新更新的JDK。以前我有jdk1.7.0_09,现在更新到jdk1.7.0_80, eclipse抛出了这个错误。

要运行Eclipse,必须提供Java运行时环境(JRE)或Java开发工具包(JDK)。没有 找到Java虚拟机后,搜索如下 C:/Program Files/Java/jdk1.7.0_09/bin/javaw

更新eclipse.ini之后,

-vm
C:/Program Files/Java/jdk1.7.0_09/bin/javaw

to

-vm
C:/Program Files/Java/jdk1.7.0_80/bin/javaw

Eclipse工作正常。


一个问题是eclipse -64位版本和我们的Java安装为32位版本之间的冲突。这个问题不容易解决,因为Java安装页面没有提供64位的选项——它假设是32位,然后下载并安装32位的版本。要解决此问题,请遵循以下步骤:

通过转到Java SE运行时环境7下载64bit版本(此链接为我们提供了下载64bit版本Java的选项)。下载并安装。 现在,尝试安装Eclipse仍然会抛出一个错误。因此,我们从C:/program files/Java/复制jre7文件夹,并将其复制到Eclipse安装文件夹中。 现在,我们将其重命名为jre。

安装Eclipse。

——launcher.appendVmargs 虚拟机 C:\Program Files\Java\ jdk1.7.0_79 \ jre \ bin \ javaw.exe —vmargs


如果在环境变量的PATH变量中添加C:\Program Files\Java\ jdk1.8.0_92\bin后,eclipse会给出相同的错误

在eclipse文件夹中找到eclipse配置设置文件,你必须看到与C:\program Files中相同的jdk路径

我希望它能有所帮助。


首先进入计算机,然后属性,然后高级系统设置,然后高级

(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

文件夹中。这样错误就会消失。


我也遇到过这个问题。我的案例如下:

在文本:

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

但是,在当前流程中,它不能将这些更改传播到其他正在运行的流程。

但是,如果直接在“注册表编辑器”中修改用户环境变量,

those modifications to the environment variables do not result in immediate change. For example, if you start another Command Prompt after making the changes, the environment variables will reflect the previous (not the current) values. The changes do not take effect until you log off and then log back on. To effect these changes without having to log off, broadcast a WM_SETTINGCHANGE message to all windows in the system, so that any interested applications (such as Windows Explorer, Program Manager, Task Manager, Control Panel, and so forth) can perform an update.

详细信息请参见如何将环境变量传播到系统

在这里,我给出了一个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

我有一个简单的解决这个问题的方法。我通过将eclipse.ini文件中的vm路径更改为最新的jre路径来解决这个问题。

我点击了这个链接:https://youtu.be/lU_eb5Ki1kY


进入Eclipse—>Windows—>Preferences 然后进入“已安装JRE” 然后点击添加,然后添加新的JDK路径(JDK安装在你机器上的路径)

然后点击确定

它应该映射到eclipse和work。

注意:只有你映射的最新版本的JDK才会显示在已安装的JRE中,类型为标准,名称为默认。

谢谢。