如何将JDK设为默认JRE?

时间:2009-09-07 10:37:56

标签: java windows ant javac

我将Eclipse与ant脚本一起使用,Eclipse在Windows XP上安装了默认的JRE。

当我想运行使用javac-tag编译的ant脚本时会出现烦恼,因为类路径中没有tools.jar,所以它会失败。

我已经认识到,如果我能让JDK成为Windows上的默认Java,那么我将拥有今天拥有的东西,以及开箱即用的ant。

可以这样做吗?我在安装过程中遗漏了什么?


编辑:我知道JAVA_HOME,但这很乏味且容易出错(当有更新的JDK可用时手动更新环境变量并不总是我记得的事情)。


编辑:我最终弄清楚如何使javac任务使用Eclipse编译器(ecj.jar),这非常有效。


编辑:Maven也支持使用Eclipse编译器,但这似乎很少使用,并且使用旧版本的ecj.jar。我打算稍晚再看一下。


编辑:使用ecj和maven-compiler-plugin 3.0非常有效,并允许使用JRE进行构建。


编辑:在解析ecj生成的字节码时,我遇到了javadoc工具崩溃的问题。

8 个答案:

答案 0 :(得分:14)

答案是“不”,没有办法让JDK在安装时成为默认的JVM。

正如其他答案所指出的那样,您可以调整路径,并将JAVA_HOME调整为完全指向JDK或不同的JVM。事实上,这就是Java安装的首要任务。

然而,您的问题是您希望找到tools.jar。为此,您可以将其复制到默认JVM下的ext目录中。检查JDK文件结构here。这可能会奏效。

另一方面,如果修改Java的JAVA_HOME和PATH变量似乎很烦人,请记住,这只是我们为保持敏锐just kidding, sucks that we still have to do this in 2009 http://www.smiley-faces.org/smiley-faces/smiley-face-smile.gif

而做的一系列事情之一。

答案 1 :(得分:9)

  1. 从网站下载JDK
  2. 完成所有操作后,转到“控制面板”
  3. 打开JAVA
  4. 单击Java选项卡,然后选择查看
  5. 列表中会有一个项目。将Java Path从JRE更改为您下载的JDK,如下所示: C:\Program Files\Java\<your_jdk_version>\bin\java.exe
    例如,我的样子如下: C:\Program Files\Java\jdk1.7.0_07\bin\java.exe

答案 2 :(得分:4)

将tools.jar文件复制到Eclipse正在查找的位置可能会起作用,但是很麻烦且很脆弱,因为这是您下次升级JDK时可能不记得的一个步骤。更好的是说服Eclipse在适当的位置寻找它。

将JAVA_HOME设置到正确的位置适用于某些工具,但Eclipse does not honor it

要尝试的几件事情:

  • 确保您的JDK已被识别 选中 偏好设置 - &gt; Java-&gt;已安装的JRE

  • 确保通过调用Ant JDK。一个线索是在顶部 您应该看到控制台输出 javaw.exe的路径正在 用过的。如果该路径在JRE中, 需要更有说服力。校验 运行 - &gt;外部工具 - &gt;外部工具 配置 - &gt; [您的Ant构建] - &gt; JRE 并确保那里的设置 指向JDK。

答案 3 :(得分:2)

尝试更改JAVA_HOME环境变量以指向JDK而不是JRE。

或者或可能另外,在任何Windows系统目录之前,将PATH条目添加到JDK bin目录

我怀疑JAVA_HOME足以让Ant工作,但是在路径上获取JDK等JDK版本有时也很好,所以当你从命令行运行java时,你会得到完全与运行javac时相同的版本。

答案 4 :(得分:1)

您可以编写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变量。)

答案 5 :(得分:0)

这通常是通过将JAVA_HOME环境变量设置为您要使用的根JDK目录来完成的。

例如,从命令行或批处理文件中,您只需执行以下操作:

set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_14

但是要将JAVA_HOME永久添加到我的电脑属性表中高级选项卡上的环境变量中。

答案 6 :(得分:0)

显然Eclipse可以在没有tools.jar的情况下编译。我猜他们有一个特定的javac命令可以使用JRE(而不是JDK);这可能是他们列出警告的原因。

无论如何,我会采用标准方式(如上所述)并在您的系统上安装JDK。您甚至可以通过调整JAVA_HOME文件来启动具有该特定JDK的Eclipse(不进行任何eclipse.ini更改)(请参阅这些instructions)。

答案 7 :(得分:0)

原因这是可行的。不明白为什么人们对这个问题说不。 复制tools.jar不是一个明智的方法,我在使用eclipese时遇到了问题, 只需将jdk而不是jre添加到我的构建路径中即可。

以下是详细信息:

http://www.gamefromscratch.com/post/2011/11/15/Telling-Eclipse-to-use-the-JDK-instead-of-JRE.aspx