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


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



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

我有Windows 7(x64)。

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

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

评论

Java Runtime Environment不是JRE SDK ...

安装JRE-这会在您的路径中提供一个javaw.exe。 JDK没有。

@Carlos,每个JDK都会带来一个私有JRE。

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

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

#1 楼

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

要记住的三件事:


“安装” JRE或JDK就像从另一台计算机解压缩或复制一样简单:没有特殊的安装步骤,并且您可以根据需要安装任意数量的JVM版本(1.4、5.0、6.0 ...)。 “(已复制)几乎在磁盘上的任何位置。
我建议始终以尽可能最新的JRE运行Eclipse(以受益于最新的热点发展)。
您可以:


在eclipse.ini中引用确切的JRE路径。

将您的任何JRE复制到 / jre目录中。
在两种情况下,都不需要更新PATH


您将在Eclipse会话中引用的JVM并不总是用于启动Eclipse的JVM,因为:


您只需要一个JRE启动Eclipse,但是一旦Eclipse启动,您应该为您的JDK注册项目(尤其是用于Java源代码和调试目的,理论上也可以用于编译,但是Eclipse拥有自己的Java编译器)
注意:您可以在Eclipse中注册一个JRE,因为它足以运行您的程序,但您可以再次注册JDK将允许更多操作。
即使Eclipse中默认的注册Java是用来启动会话的Java,您也可以注册一个较旧的SDK(包括非Sun的SDK)来运行/调试您的SDK。 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


评论


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

– jmbertucci
2012年6月5日在22:13

@Nuktu:我已经将jmbertucci的评论添加到了答案中

–VonC
2012年6月7日在8:29

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

–VonC
2012年6月7日在8:29

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

–史蒂夫·梅恩(Steve Mayne)
16年4月8日在15:39

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

–VonC
16年4月8日在16:53

#2 楼

只需将此文件复制:

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


到Eclipse文件夹

*注意仅在Windows上进行了测试



评论


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

– Noha Kareem
2014年7月4日在23:54



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

–CuriousMarc
2014年11月6日在3:16



如果有人失败,请尝试将jre文件夹复制到eclipse文件夹。

–亚瑟·刘志新
17年2月10日在17:22

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

–思维团队
17 Mar 24 '17 at 12:56

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

–钻石龙
1月10日15:18

#3 楼

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


...在您当前的PATH中


它的字面意思是PATH,而不是JAVA_HOME

右键单击“我的电脑”,然后选择“属性”(或按Winkey + Pause),转到“高级”选项卡,单击“环境变量”按钮,在底部的“系统变量”列表中选择Path(否,不是Classpath),单击“编辑”并将;c:\path\to\jdk\bin添加到值的末尾。或者,如果不存在,还可以添加JAVA_HOME环境变量,并在PATH中使用它。在同一对话框中,单击“新建”,然后将JAVA_HOME添加为c:\path\to\jdk的值。然后可以将;%JAVA_HOME%\bin添加到Path设置值的末尾。

评论


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

–华特
2010年1月11日15:28



带有空格的路径需要用引号引起来。

– BalusC
2010年1月11日在17:48

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

–艾希尔·贾恩(Akhil Jain)
2012年12月2日在10:29



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

–informatik01
13年7月21日在21:01



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

–triplebig
14年2月18日在21:52

#4 楼

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


添加一个JAVA_HOME条目,该条目指向JDK的安装目录(例如C:\ Program Files \ Java \ jre6)
找到Path条目,并将以下内容添加到末尾;%JAVA_HOME%\ bin
确定更改
重新启动Eclipse,以便它知道新环境
/>
现在,大多数Java工具都可以通过使用JAVA_HOME环境变量或在Path环境变量中查找java.exe / javaw.exe来查找Java安装。

评论


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

–华特
2010年1月11日15:23

#5 楼

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

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

评论


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

–华特
10 Nov 16'在19:24

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

–musicliftsme
2011年8月1日22:02

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

–样式
13年8月5日在22:43

#6 楼

原来,我要做的就是将“路​​径”更改为:“ C:\ Windows \ system32; C:\ Windows; C:\ Windows \ System32 \ Wbem ;
C:\ Program Files(x86)\ Java;
C:\ Program Files
(x86)\ Java \ jdk1.6.0_14 \ bin“


做到了:)

评论


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

–Csaba_H
2010年1月12日15:49

#7 楼

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

评论


我再也没有问题了-但这似乎是一个很好的解决方案并且很有意义-用其他64位浏览器测试它会很有趣...

–华特
10 Nov 16 '19:22

#8 楼

简而言之,解决方案:

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

#9 楼

不要依赖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


替换C:\ Program Files \ Java \ jdk1.7.0 _71 \ bin \ javaw.exe与您的jdk或jre`s路径

评论


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

–惠里
2014年12月31日在16:40



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

– BuvinJ
19年2月16日在16:06

#10 楼

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

#11 楼

不用担心,我也被这个错误和致命信息所破坏,当我得到它时,我什至感到沮丧,甚至我都放弃了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文件所在的位置。就像我在这个位置设置了eclipse

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


所以在eclipse文件夹中粘贴“ jre”文件夹。如果您具有“ jre6”,则将其重命名为“ jre” ....并运行Eclipse,您将获得解决方案...

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


其他解决方案:2

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


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


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


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

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

#12 楼

编辑了我的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运行良好。

评论


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

–史蒂夫·梅恩(Steve Mayne)
16年4月8日在15:37

#13 楼

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

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


请参见
http://wiki.eclipse.org/FAQ_How_do_I_run_Eclipse%3F

#14 楼

如果在环境变量的PATH变量中添加C:\ Program Files \ Java \ jdk1.8.0_92 \ bin之后,eclipse给出了相同的错误
,请检查eclipse文件夹中的eclipse配置设置文件,您必须看到与C:\ program Files文件中相同的jdk路径。


希望对您有帮助。

#15 楼

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

#16 楼


64位OS->您需要:64位Java和64位Eclipse
32位OS->您需要:32位Java和32位Eclipse

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

#17 楼

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

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

#18 楼

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

#19 楼

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

#20 楼

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

推荐的方法是编辑eclipse.ini文件,并告诉eclipse确切的位置通过在文件中包含以下行来查找vm / jre:

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

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

来源:-Wiki

#21 楼

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


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

然后,我安装了64位版本的Java。
复制了javaw.exe从那个版本开始。

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

#22 楼

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


查找您的Android sdk文件夹并使用文本编辑器打开android.bat文件。
您将在文件开头找到一些类似的命令,

set java_exe=

call lib\find_java.bat

if not defined java_exe goto :EOF



将它们更改为

set java_exe=

查找行

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>
保存并关闭文件,现在您可以使用了。.


#23 楼

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

评论


我遵循以下指示:wso2.org/project/wsas/java/2.0-beta/docs/setting-java-home.html,但无济于事

–华特
2010年1月8日在20:21

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

– Topher Fangio
2010年1月8日在20:22

安装Java不需要重新启动。

–索比昂·拉文·安德森(ThorbjørnRavn Andersen)
2010年1月8日在21:06

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

–user85421
2010年1月8日于23:08

#24 楼

我也遇到了这个问题。我的情况如下:




在文本中:

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\Tools\binn\;C:\Progra
m Files (x86)\Perforce;C:\ProgramFiles0 Editor;C:\Program Files\Microsoft SQL Server0\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\Tools\binn\;C:\Program Files (x86)\Perforce;C:\ProgramFile
s0 Editor;C:\Program Files\Microsoft SQL Server0\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 [/ s [/ u [] [/ p []]]]] [/ m]

/m Specifies to set the variable in the system environment. The default setting is the local environment


#25 楼

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

您最近更新了JDK吗?

评论


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

–华特
2010年1月11日15:31

#26 楼

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

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

评论


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

–华特
2010年1月11日15:36

您去过java.com吗?不是javasoft.com?

–索比昂·拉文·安德森(ThorbjørnRavn Andersen)
2010年1月11日,17:05

#27 楼

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

评论


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

–华特
2010年1月11日15:34

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

–惠里
2014年12月31日在16:33



对我而言(Windows 10 64位+ Eclipse 4.10),窍门是除了JAVA_HOME环境变量之外,还添加JRE_HOME变量,该变量设置为javaw.exe位置的位置(该位置可能始终是已安装的JDK)。

–Guy Avraham
19 Mar 9 '19 at 17:23

#28 楼

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


安装64位版本的Eclipse(可通过单击“开发版本”找到下载页面上的“标签”标签。)
安装32位版本的JDK。


评论


看到了,但是您使用的是Windows 7 x86,而我使用的是x64 ---正如其他人所说,此问题可能是SUN在编程其网页“检测版本”(即x64或x86)的过程中遇到的麻烦应该使用

–华特
10 Nov 16 '19:27

更正,我使用的是Windows 7 x64

– Tim
2011年1月31日17:21

#29 楼

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

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

然后它就可以工作。

#30 楼

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