14

我将 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。我打算稍后再研究一下。


编辑:在 maven-compiler-plugin 3.0 中使用 ecj 效果很好,并且允许使用 JRE 进行构建。


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

4

8 回答 8

15

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

正如其他答案指出的那样,您可以调整路径和 JAVA_HOME 以指向 JDK 或完全不同的 JVM。这实际上是 Java 安装首先要做的事情。

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

另一方面,如果修改 Java 的 JAVA_HOME 和 PATH 变量看起来很烦人,请记住,这只是我们为保持敏锐所做的一系列事情之一开个玩笑,糟透了,我们在 2009 年仍然必须这样做

于 2009-09-07T10:58:50.377 回答
9
  1. 从网站下载 JDK
  2. 一切完成后,进入控制面板
  3. 打开JAVA
  4. 单击 Java 选项卡并选择查看
  5. 列表中将出现一项。将 Java 路径从 JRE 更改为您下载的 JDK,如下所示 C:\Program Files\Java\<your_jdk_version>\bin\java.exe
    例如,我的看起来像这样: C:\Program Files\Java\jdk1.7.0_07\bin\java.exe
于 2012-10-13T14:26:40.663 回答
4

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

将 JAVA_HOME 设置为正确的位置适用于某些工具,但Eclipse 不支持它

有几件事可以尝试:

  • 确保在Preferences->Java->Installed JREs下识别并选择了您的 JDK 。

  • 确保 JDK 正在调用 Ant。一条线索是,在控制台输出的顶部,您应该看到正在使用的 javaw.exe 的路径。如果该路径在 JRE 中,则需要更有说服力。检查 Run->External Tools->External Tools Configurations->[your Ant build]->JRE 并确保那里的设置指向 JDK。

于 2011-03-14T17:45:40.090 回答
2

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

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

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

于 2009-09-07T10:39:47.527 回答
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 是否会接受这些更改,或者是否需要某种类型的重启/环境变量重新加载。)

于 2009-09-07T12:19:25.800 回答
0

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

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

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

但是,要设置 JAVA_HOME 将其永久添加到My Computer属性表中Advanced选项卡上的环境变量中。

于 2009-09-07T10:43:05.910 回答
0

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

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

于 2009-09-07T20:22:23.430 回答
0

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

这是详细信息:

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

于 2016-06-11T18:24:14.183 回答