Eclipse-没有Java(JRE)/(JDK)…没有虚拟机


278

我正在尝试让Eclipse v3.5(Galileo)在我的计算机上重新运行-以前我没有任何问题地运行过它,但是现在我仍然遇到此错误:

Java运行时环境(JRE)或Java开发工具包(JDK)必须可用才能运行Eclipse。搜索以下位置后未找到Java虚拟机:当前路径中的C:\ eclipse \ jre \ javaw.exe

我刚刚完成了JDK和SDK的全新安装。

我有Windows 7(x64)。

这是怎么回事?我如何解决它?

我无法运行任何ipconfig / tracert /或ping。


3
Java Runtime Environment是JRE不是SDK ...
user85421'1

1
安装JRE-这会在您的路径中提供一个javaw.exe。JDK不是。
托尔比约恩Ravn的安德森

12
@Carlos,每个JDK都会带来一个私有JRE。
托尔比约恩Ravn的安徒生

3
@Thorbjørn:重点是什么?我知道,而且JDK还带来了公共 JRE。我写过“ Java Runtime Environment不是SDK”,但您必须阅读原始文章(在1月11日进行编辑之前),以了解为什么写它:“一个Java Runtime Environment(SDK)或...”
user85421

11
如果在安装Eclipse之后最近又在其他路径中安装了JDK,则可能会遇到此问题。这是因为首次安装时,eclipse硬编码eclipse.ini中的JDK路径。只需在eclipse.ini中更改正确的JDK路径即可。那应该解决这个错误。
Rajaraman 2014年

Answers:


221

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

要记住的三件事:

  • “安装” JRE或JDK就像从另一台计算机解压缩或复制一样简单:没有特殊的安装步骤,并且您可以根据需要拥有任意数量的不同JVM版本(1.4、5.0、6.0 ...) ,“安装”(复制)到磁盘上几乎任何位置。
  • 我建议始终以尽可能最新的JRE运行Eclipse (以从最新的热点演变中受益)。您可以:
  • 您将 Eclipse会话中引用的JVM 并不总是用于启动Eclipse 的JVM,因为:
    • 您只需要一个JRE来启动Eclipse,但是一旦启动Eclipse,就应该为您的项目注册一个JDK(尤其是用于Java源代码和调试目的,理论上也可以进行编译,但是Eclipse拥有自己的Java编译器)注:您可以注册仅Eclipse中的JRE,因为它足以运行您的程序,但是JDK再次允许进行更多操作。
    • 即使在Eclipse中默认注册的Java是用来启动会话的Java,您仍然可以注册一个较旧的SDK(包括非Sun的SDK),以便使用与以下类似的JRE运行/调试程序。实际用于生产。

已安装的JRE


2012年6月,jmbertucci评论:

我正在运行Windows 7 64位,并且安装了32位JRE。我下载了Eclipse 64位,它寻找64位JRE。因为我没有64位JRE,所以抛出了错误,这是有道理的。

我进入了Java手动安装页面(无法像您所希望的那样直接访问)并安装了64位版本。请参阅“ 所有操作系统的Java下载 ”。那就是我所需要的。


2016年4月:史蒂夫·梅恩(Steve Mayne)在评论中添加:

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


42
这个问题/答案有点旧,但是我遇到了这个问题,所以我将发布我的笔记。我正在运行Win7 64位,并且安装了32位JRE。我下载了Eclipse 64bit,它寻找64bit JRE。因为我没有64位JRE,所以抛出了错误,这是有道理的。我转到Java手动安装页面(无法像您所希望的那样直接访问)并安装了64位版本。java.com/en/download/manual.jsp 这就是我所需要的。
jmbertucci 2012年

2
@Nuktu:我在答案中添加了jmbertucci的评论
VonC

@jmbertucci:谢谢您的笔记。我将它们添加到答案中以获得更多可见性。
VonC 2012年

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

1
@SteveMayne有趣,谢谢。我已将您的评论包括在答案中,以提高知名度。
VonC

141

只需复制此文件:

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

到Eclipse文件夹

*注意仅针对Windows测试

替换Eclipse文件夹中的javaw.exe


我正在寻找一个简单的解决方案作为此答案,但对我而言不起作用,以防万一有人遇到类似情况,更改eclipse.ini文件中的vm目录可能会有所帮助
Noha Kareem 2014年

3
对我不起作用,给了我错误:打开注册表项“ Software \ Javasoft \ Java Runtime Environment”。我必须将整个jre7(以我为例)文件夹复制到Eclipse目录中,并将其重命名为jre。然后它起作用了。
CuriousMarc

如果有人失败,请尝试将jre文件夹复制到eclipse文件夹。
亚瑟·志新·刘

@NohaKareem您的建议对我而言是最接近的。不幸的是,我的'jre'文件夹仅包含'lib',因此复制Java'jdk'文件夹(虽然更大,只有350MB,但是有一个内部的'bin'文件夹),并将其重命名为'jre'是可行的。谢谢。
Mindsect小组

如果同时安装了32位和64位Java,但路径中包含32位Java,则尝试打开64位Eclipse将会失败,将64位javaw文件放在exclipse旁边可以使其正常工作。
DiamondDrake

83

所有关于设置其他的答案只有JAVA_HOME不完全正确。Eclipse即参考JAVA_HOME。仔细查看错误消息:

...在您当前的路径中

从字面上说PATH,不是JAVA_HOME

右击我的电脑,选择属性(或按Winkey+ Pause),转到标签高级,点击按钮环境变量,在系统变量列表底部的选择Path(没有,没有 Classpath),点击编辑,并添加;c:\path\to\jdk\bin到值的末尾。

或者,如果不存在,也可以添加JAVA_HOME环境变量并在中使用它PATH。在同一对话框中,单击“ 新建”,然后添加JAVA_HOME的值c:\path\to\jdk。然后可以将其添加;%JAVA_HOME%\binPath设置值的末尾。


2
它不起作用:)环境名称的数据:路径---值:C:\ Program Files(x86)\ Java; C:\ Program Files(x86)\ Java \ jdk1.6.0_14 \ bin
Wallter 2010年

1
带空格的路径需要用引号引起来。
BalusC 2010年

我的路径之前已经过完美配置,Borland编译器编辑了path字段,并将Java路径替换为其自己的路径,现在改为Fixed,thnks!
Akhil Jain

1
@BalusC实际上,在Windows上配置PATH环境变量时,无需在引号中包含路径。仅用分号(;)分隔就足够了。
informatik01

这是解决它的答案。经过几个小时的挖掘,对于那些有相同问题的人,您需要的是:1)确保所有内容都是64位的。应该自动安装在“程序文件”中,而不是“程序文件(x86)”中。2)将-VM写入其他答案具有的bin文件夹。3)按照这个人说的那样设置路径。如果您无法从命令行运行Java,则不会发生任何事情。4)欢喜
Triplebig 2014年

36

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

  • 添加一个指向安装JDK的目录的JAVA_HOME条目(例如C:\ Program Files \ Java \ jre6)
  • 找到“路径”条目,并将以下内容添加到末尾;%JAVA_HOME%\ bin
  • 确定更改
  • 重新启动Eclipse,以便它知道新环境

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


3
当我添加name:JAVA_HOME值时:“ C:\ Program Files(x86)\ Java \ jdk1.6.0_14;%JAVA_HOME%\ bin”我仍然遇到相同的错误
Wallter 2010年

24

如果您下载Eclipse的64位版本;它将寻找64位版本的JRE。如果您下载Eclipse的32位版本;它将寻找32位版本的JRE

我要做的是安装32位和64位版本的JRE。您可以从SUN Oracle站点获得。JAVA网站似乎会自动安装32位版本的Java。我猜那是因为网络浏览器。


2
正如ladookie所说,问题很可能是浏览器在Java网站上运行错误代码并获得了错误的JAVA版本...
Wallter 2010年

1
speedbaron完全在这里。如果要修改环境变量PATH,请确保输入正确版本的路径。我的Windows 7 64位系统安装了32位JRE(不知道为什么),因此我安装了64位版本并将其添加到新目录的PATH中。现在看来运作良好。
musicliftsme 2011年

1
这是我的问题。请注意,Windows将64位安装到C:\Program Files\Java和32位安装到C:\Program Files (x86)\Java
styfle

10

原来,我要做的就是将“路径”更改为:

“ C:\ Windows \ system32; C:\ Windows; C:\ Windows \ System32 \ Wbem; C:\ Program Files(x86)\ Java; C:\ Program Files(x86)\ Java \ jdk1.6.0_14 \ bin ”

做到了:)


1
顺便说一句,您应该使用jdk1.6.0_16或更高版本。使用jdk 1.6.0_14,您将无法在Eclipse中正确使用断点:bugs.eclipse.org/bugs/show_bug.cgi?id=279137
Csaba_H 2010年

9

我有Windows 7 64位,并且在Eclipse中也遇到了同样的问题。为了使其正常工作,我必须使用Internet Explorer(64位版本)下载Java。这是让Java安装64位版本的唯一方法。当我使用firefox安装Java时,它会自动安装32位版本(太蠢了!)。而且Eclipse 64位版本无法检测到Java 32位版本。


我不再遇到问题了-但这似乎是一个不错的解决方案,并且很有道理-使用其他64位浏览器对此进行测试将很有趣...
Wallter 2010年

7

简而言之,解决方案:

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


7

不要依赖Windows路径变量,因为它几乎在每次更新中都会更改。例如,chrome(64位计算机上为32位)java更新将32位JVM替换为系统范围的64位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


我投票赞成这个答案是正确的。不要依赖Windows路径变量,因为它几乎在每次更新中都会更改。例如,chrome(64位计算机上为32位)java更新将系统范围的64位JVM替换为32位JVM。另请注意,该条目必须是eclipse.ini中的最后一个条目,否则它将不起作用。并且-另有说明-eclipse.exe不评估JAVA_HOME变量。请相应地编辑您的答案。
Heri 2014年

这是最佳答案,因为它可以直接解决实际问题。Eclipse正在为每个特定的参数寻找路径,而该值是错误的……因此更正该值可解决此问题。
BuvinJ

6

eclipse.ini文件中,您需要更新虚拟机的路径,以指向javaw.exe计算机上安装的相同位置。


6

不用担心,我也被这个错误和致命消息所破坏,当我得到它的时候,我什至感到沮丧,甚至我放弃了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文件夹内粘贴“ jre”文件夹。如果您有“ jre6”,则将其重命名为“ jre” ....并运行Eclipse,您将获得解决方案...

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

其他解决方案:2

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

  1. 从Java路径(例如C:\ Program Files \ Java \ jre6 *等)复制文件夹“ jre”,并将其粘贴到您的eclipse目录中(您可以在哪里使用eclipse)
  2. 转到eclipse.ini文件,将其打开。
  3. 更改您的javaw.exe文件的目录,例如

-vmF:\ Softwares \ LANGUAGES SOFTEARE \ Android Setup \ eclipse Indigo版本32位\ jre \ bin / javaw.exe

现在这一次,当您启动eclipse时,它将搜索javaw.exe,因此它将搜索eclipse.ini中的路径,因为它现在位于同一文件夹中,因此它将启动javaw.exe并开始工作。 。

如果您还有任何疑问,可以再次询问,只需进入我的个人资料并找到我的电子邮件ID。因为我喜欢堆栈溢出论坛,所以这使我成为了程序员。*


5

编辑了我的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工作正常。


1
这是对我有用的解决方案-感谢Lucky。Eclipse加载了ini文件中引用的JRE,因此接受的答案在建议它查看env PATH时是错误的。
史蒂夫·梅恩


3

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

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

在此处输入图片说明

希望对您有所帮助。


2

当遇到此类问题时,就我而言,我在x86 Eclipse中安装了x64 JDK + JRE。因此,安装x86 JDK + JRE解决了我的问题:)另外,我jre在eclipse文件夹中创建了文件夹,并将bin文件夹从本地路径复制C:\Program Files (x86)\Java\jre7..\eclipse\jre\


2
  • 64位操作系统->您需要:64位Java和64位Eclipse
  • 32位操作系统->您需要:32位Java和32位Eclipse

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


1

上周,我有一个同事遇到了这个确切的问题。他通过安装x64版本的Eclipse和x64 JDK对其进行了修复。

编辑:安装必要的插件后,他重用了旧的工作空间,所以这不是什么大问题


1

有一种更简单的方法可以做到这一点。只需运行cmd x64。在开始菜单ant中的搜索栏中键入cmd x64,您将找到它:)或者,您应该设置程序文件(x86)的路径...例如C:\ Program Files(x86)\ Java \ jre6


1

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


1

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

推荐的方法是编辑eclipse.ini文件,并通过在文件中包含以下代码行来告诉eclipse在何处寻找vm / jre:

-vm
[java.exe的路径](通常位于“ C:\ Program Files \ Java \ jre7 \ bin”下)

PS要编辑eclipse.ini,您可能需要将其移动,编辑然后粘贴回去

资料来源:-维基


1

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

  1. 最初,我没有在新计算机上安装Java。因此,我必须进行安装(从http://java.com/en/download/manual.jsp下载)。
  2. 我正在运行64位操作系统。但是,在下载时,我收到一条消息,可以帮助我选择要下载的Java版本:Choose the 32-bit download to use with a 32-bit browser.因此,我下载了32位版本。
  3. 然后,我按照https://stackoverflow.com/a/14464653/801919中提到的步骤进行操作,希望获得解决方案。
  4. 我还有其他错误: Java was started but returned exit code=13
  5. 然后,我安装了64位版本的Java。
  6. javaw.exe从该版本复制。

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


1

好吧,这个答案是给那些尝试了所有其他方法的人的,但还是没有运气,也许这是Android Studio还是Eclipse我通常会在其他方法都失败时这样做。

  1. 找到您的Android sdk文件夹,然后使用文本编辑器打开android.bat文件
  2. 您会在文件的开头找到类似这些的命令,

set java_exe=

call lib\find_java.bat

if not defined java_exe goto :EOF

  1. 将它们更改为

    set java_exe=< java.exe文件的路径(可以在jdk文件夹/ bin目录中找到) >

  2. 找到线

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

  1. 将其替换为set swt_path=< 您各自的swt.jar文件的路径,对于x86,它位于sdk \ tools \ lib \ x86,对于x64则位于sdk \ tools \ lib \ x86_64 >
  2. 保存并关闭文件,现在一切顺利。

1

尝试将JAVA_HOME设置为正确的文件夹。Google,用于在Windows中设置环境变量。



我讨厌这么说...但是您重新开始了吗?
Topher Fangio 2010年

安装Java不需要重新启动。
托尔比约恩Ravn的安德森

1
不需要JAVA_HOME。这是用于查找javaw.exe的PATH。(JAVA_HOME被其他一些应用程序(例如ant)使用,因此设置它也没有错)
user85421 2010年

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资源管理器,程序管理器,任务管理器,控制面板等)都可以执行更新。

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

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

0

检查窗口>首选项> Java>已安装的JRE。确保那里有东西;如果没有,请添加一个。

您最近是否更新了JDK?


是的,我尝试添加android插件。但是没有(就像Topher Fangio所说的那样),我现在不能启动Eclipse。
Wallter 2010年

0

JDK不在默认路径中安装JVM。

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

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


我重新安装了它(它甚至问我是否要重新安装它)都无济于事。(我做过Google Chrome插件14或类似的&& Firefox)
Wallter 2010年

您去过java.com吗?不是javasoft.com?
托尔比约恩Ravn的安德森

0

设置JAVA_HOME变量,并将ad JAVA_HOME / bin设置为evnrionment路径变量。


像这样:“ C:\ Program Files(x86)\ Java; C:\ Program Files(x86)\ Java \ jdk1.6.0_14 \ bin”?-它仍然没有用:)
Wallter 2010年

在路径变量中引用JAVA_HOME要求将其嵌入:%JAVA_HOME%\ bin
2014年

对我来说(Windows 10 64位+ Eclipse 4.10),诀窍是除了JAVA_HOME环境变量外,还添加了变量,该JRE_HOME变量被设置为位置的javaw.exe位置(该位置可能始终是已安装的JDK的bin文件夹) )。
Guy Avraham

0

我遇到了同样的问题(Windows 7 x64、64位JDK,32位Eclipse),发现了2个解决方案:

  • 安装Eclipse的64位版本(可通过单击下载页面上的“开发构建”选项卡找到。)
  • 安装32位版本的JDK。

看到了,但是您使用的是Windows 7 x86,而我使用的是x64 ---正如其他人所说,此问题可能是SUN在编程其网页如何“检测版本”(例如x64或x86)时感到不安的原因。应该使用
Wallter

更正,我使用的是Windows 7 x64
Tim,

0

我有同样的问题。对我来说,修复它的简单方法是将JRE和eclipse都安装为x86或x64。当它们的位类型不匹配时,eclipse找不到它。因此,如果对您来说卸载并重新安装以使其匹配并不重要,那么我会这样做。

我最终安装:Java Runtime Environment 1.7.0.3(64位)和Eclipse Indigo(3.7)(64位)

然后就可以了。


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.