我在Eclipse中使用Ant脚本,而Eclipse在Windows XP上使用默认的JRE安装。
当我想要运行用javac-tag编译的ant脚本时,会遇到麻烦,因为在classpath中没有tools.jar,所以会失败。
我已经意识到,如果我能使JDK成为Windows上的默认Java,那么我将拥有我今天的东西,加上ant开箱即用。
可以这样做吗? 我在安装过程中错过了什么?
编辑:我知道的JAVA_HOME,但是这是繁琐和容易出错(手动更新环境variables,当一个新鲜的JDK可用并不总是我记得)。
编辑:我结束了弄清楚如何使javac任务使用Eclipse编译器(ecj.jar),这很好地工作。
编辑:Maven也支持使用Eclipse编译器,但这似乎很less使用,并与旧版本的ecj.jar。 我打算稍后再看看。
编辑:与maven-compiler-plugin 3.0一起使用ecj工作得非常好,并允许使用JRE构build。
编辑:当parsing由ecj生成的字节码时,我遇到了javadoc工具崩溃的问题。
答案是“不”,安装时没有办法让JDK成为默认的JVM。
正如其他答案指出的那样,您可以调整您的路径,并将您的JAVA_HOME指向JDK或完全不同的JVM。 这实际上是Java安装首先完成的。
但是,你的问题是你想要找到tools.jar。 要做到这一点,你可以将它复制到默认JVM下的ext目录中。 在这里检查JDK文件结构。 这可能会起作用。
另一方面,如果修改JAVA的JAVA_HOME和PATH变量看起来很烦人,请记住,这只是我们保持敏锐的一系列开玩笑之一,糟糕的是我们仍然需要在2009年这样做www.smiley-faces.org/smiley-faces/smiley-face-smile.gif
C:\Program Files\Java\<your_jdk_version>\bin\java.exe
。 C:\Program Files\Java\jdk1.7.0_07\bin\java.exe
将tools.jar文件复制到Eclipse正在查找的位置可能会起作用,但是这是一个混乱和脆弱的环境,因为这是您下次升级JDK时可能不记得的一个步骤。 更好的是说服Eclipse在适当的位置寻找它。
将JAVA_HOME设置为正确的位置适用于某些工具,但Eclipse并不尊重它 。
几件事情要尝试:
确保在Preferences-> Java-> Installed JRE下标识并选择了JDK。
确保Ant正在被JDK调用。 一个线索是,在控制台输出的顶部,您应该看到正在使用的javaw.exe的路径。 如果这条路径在JRE中,则需要更令人信服的。 检查运行 – >外部工具 – >外部工具配置 – > [你的Ant构建] – > JRE ,并确保那里的设置指向JDK。
尝试更改JAVA_HOME环境变量以指向JDK而不是JRE。
另外或可能另外, 在任何Windows系统目录之前 ,将PATH条目添加到JDK bin目录。
我怀疑JAVA_HOME足以让Ant工作,但是在路径上获取JDK版本的java等也是很好的,所以当你从命令行运行java
,你将会得到和你一样的版本运行javac
。
你可能可以编写一个WSH脚本来自动重新配置你的路径。
这个JScript脚本只是打印一些信息:
//file: jdk.js usage: cscript /Nologo jdk.js var objShell = WScript.CreateObject("WScript.Shell"); function setJdk(version) { try { var jdk = objShell.RegRead("HKEY_LOCAL_MACHINE\\SOFTWARE\\" + "JavaSoft\\Java Development Kit\\" + version + "\\JavaHome"); if(jdk != null && jdk != "") { jdk += "\\bin"; var path = objShell.RegRead("HKEY_CURRENT_USER\\Environment\\Path"); path = jdk + ";" + path; WScript.Echo("Could set PATH to " + path + "\n"); } } catch(err) { /*probably key does not exist*/ } } setJdk("1.7"); setJdk("1.6"); setJdk("1.5");
有一个RegWrite方法可用于写入注册表。 有一些工作需要确定最新的版本和重新调整路径,删除过时的条目以及分拣系统和用户路径。 毫无疑问,它也可以用来设置JAVA_HOME
。 JDK条目需要出现在system32
目录之前,因为JRE安装程序将java.exe
放在那里。
(我不能100%确定shell是否会接受这样的更改,或者是否需要重新启动/ env变量重新加载。)
这通常是通过将您的JAVA_HOME
环境变量设置为您要使用的根JDK目录来完成的。
例如,从命令行或批处理文件中,您只需执行以下操作:
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_14
但是,要设置JAVA_HOME,将其永久添加到“ 我的电脑 ”属性表中“ 高级”选项卡上的环境变量中。
显然Eclipse可以在没有tools.jar
情况下编译。 我猜测他们有一个特定的javac
命令,可以使用JRE(而不是JDK); 这可能是他们可以列出警告的原因。
无论如何,我会采用标准的方式(如上所示),并在您的系统上安装JDK。 您甚至可以通过调整eclipse.ini
文件(请参阅这些说明 )来启动具有特定JDK的Eclipse(无需任何JAVA_HOME
更改)。
因为这是可行的。 不明白为什么人们对这个问题说不。 复制tools.jar不是一个明智的方式,我使用eclipese时遇到了问题,只需将jdk而不是jre添加到我的构建路径中即可。
这里是细节:
http://www.gamefromscratch.com/post/2011/11/15/Telling-Eclipse-to-use-the-JDK-instead-of-JRE.aspx