49

我正在尝试使用 ANT 脚本对 jar 文件进行签名。我知道这必须指向 JDK 目录jarsigner.exe才能运行,但是当我回显 java.home 时,它​​会返回 JRE 目录。

这对 javac 来说不是问题,因为我可以设置可执行路径。但是,signjar 不存在。

如何更改 java.home 路径?当我右键单击 MyComputer 并转到:

属性 > 高级 > 环境变量

“PATH”变量正确地指向 JDK ( C:\program files\java\jdk\bin)。

更新:更改下面建议的 PATH 变量后,文件现在可以正确签名。

4

10 回答 10

55

在 Eclipse 中,Ant java.home变量不是基于 Windows JAVA_HOME 环境变量。相反,它被设置为项目 JRE 的主目录。

要更改默认 JRE(例如将其更改为 JDK),您可以转到Windows->Preferences...并选择Java->Installed JREs

要仅更改单个项目的 JRE,您可以转到Project->Properties并选择Java Build Path并选择Libraries选项卡。找到JRE System Library并单击它,然后选择Edit并选择所需的 JRE(或 JDK)。

如果这不起作用,那么在运行构建文件时,您可以选择Run as->Ant Build...并单击JRE选项卡,选择单独的 JRE并在此处指定所需的 JRE。

于 2010-12-14T14:32:59.330 回答
17

对我来说,ant 显然拒绝听取 eclipse 默认、项目 JDK 的任何配置,并且“Ant Home Entries”的建议没有任何吸引力——那里没有提到 JDK。

但是,这有效:

Menu "Run" -> "External Tools" -> "External Tools Configuration".
  Goto the node "Ant build", choose the ant buildfile in question.
     Choose tab "JRE".
        Select e.g. "Run in same JRE as workspace", or whatever you want.
于 2013-06-05T15:11:12.320 回答
13

在 Windows 下,您需要遵循:

开始 -> 控制面板 -> 系统 -> 高级 -> 环境变量。

...并且您需要设置JAVA_HOME(与您提到的 PATH 变量不同)以引用 JDK 主目录,而不是 bin 子目录;例如“C:\program files\java\jdk”。

于 2009-08-17T14:50:28.190 回答
11

简单地说,在 Eclipse 中将 JAVA 版本强制为 Ant:

在 Ant 文件上使用 RunAs 选项,然后在JRE选项卡中选择External Tool Configuration ,定义您要使用的 JDK/JRE 版本。

于 2013-11-19T12:16:39.513 回答
4

还要确保设置您的JAVA_HOME环境变量。事实上,我通常设置JAVA_HOME, 然后将字符串 " %JAVA_HOME%\bin" 附加到系统的PATH环境变量中,这样如果 Java 升级或更改,只需更改JAVA_HOME变量即可。

并确保关闭任何命令提示符窗口或打开可能读取环境变量的应用程序,因为在重新启动应用程序之前通常不会注意到对环境变量的更改。

于 2009-08-17T14:51:04.273 回答
3

除了验证可执行文件是否在您的路径中之外,您还应该确保 Ant 可以tools.jar在您的 JDK 中找到。解决这个问题的最简单方法是添加tools.jar到 Ant 类路径中:

将 tools.jar 添加到 Ant 类路径。

于 2017-11-02T20:54:45.927 回答
1

如果您使用的是 Eclipse,请尝试以下操作:

  • 右键单击 ant 构建文件,然后选择“属性”。
  • 单击“运行/调试设置”,然后单击启动配置文件。你应该可以编辑它。
  • 单击“编辑”后,您应该会看到一个带有“属性”选项卡的新窗口,其中将显示一个 Ant 构建属性列表。列表中有一个“java.home”属性。确保它指向正确的路径。
于 2013-08-27T21:06:30.803 回答
1

今天早上花了几个小时面对这个问题。我可能是这些论坛上技术最少的人。像请求者一样,我忍受了每次设置 %JAVA_HOME% 的提醒,每次看到这个不明智的建议时都会咬我的舌头。最后,我思考了我笔记本电脑的 JRE 是否是我的 JDK 之前的版本(因为 JRE 会定期自动更新)并且我安装了最新的 JDK。差异很小,源于几周的不同版本。我从 jdk v 1.0865 上的这个错误开始。JRE 为 1.0866。安装后,我有 jdk v1.0874 和等效的 JRE。那时,我指示 Eclipse JRE 专注于我的 JDK,一切都很好。我的 java.home 的 println 甚至反映了正确的 JRE。

如此多的反馈重复了错误的反应。我强烈要求人们阅读其他人的反馈,以避免无用的冗余。保重,SG

于 2016-02-06T19:52:17.593 回答
0

设置环境变量

这是我总是忘记的部分。因为您是手动安装 Ant,所以您还需要手动设置环境变量。

对于 Windows XP:要在 Windows XP 上设置环境变量,请右键单击我的电脑并选择属性。然后转到高级选项卡并单击底部的环境变量按钮。

对于 Windows 7:要在 Windows 7 上设置环境变量,请右键单击计算机并选择属性。单击高级系统设置,然后单击底部的环境变量按钮。

Windows XP 和 Windows 7 的对话框是相同的。确保您只处理系统变量而不是用户变量。

您绝对需要的唯一环境变量是JAVA_HOME,它告诉 Ant 您的 JRE 的位置。如果您已经安装了 JDK,那么这很可能c:\Program Files\Java\jdk1.x.x\jre在 Windows XP 和c:\Program Files(x86)\Java\jdk1.x.x\jreWindows 7 上。您会注意到它们的路径中都有空格,这会导致问题。您需要使用错位名称 [3] 而不是完整名称。因此,对于 Windows XP,使用C:\Progra~1\Java\jdk1.x.x\jre;对于 Windows 7,C:\Progra~2\Java\jdk1.6.0_26\jre如果它安装在 Program Files(x86) 文件夹中,则使用(否则使用与 Windows XP 相同)。

仅此一项就足以让 Ant 工作,但为了方便起见,最好将 Ant 二进制路径添加到PATH变量中。此变量是以分号分隔的目录列表,用于搜索可执行文件。为了能够在任何目录中运行 ant,Windows 需要知道 ant 二进制文件和 java 二进制文件的位置。您需要将这两个都添加到PATH变量的末尾。对于 Windows XP,您可能会添加如下内容:

;c:\java\ant\bin;C:\Progra~1\Java\jdk1.x.x\jre\bin

对于 Windows 7,它看起来像这样:

;c:\java\ant\bin;C:\Progra~2\Java\jdk1.x.x\jre\bin

完毕

完成此操作并应用更改后,您需要打开一个新的命令提示符以查看变量是否设置正确。您应该能够简单地运行 ant 并看到如下内容:

Buildfile: build.xml does not exist!
Build failed
于 2014-08-01T06:27:48.197 回答
0

转到环境变量并添加

JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_37

直到 jdk 路径(不包括 bin 文件夹)
现在将 JAVA_HOME 设置为路径,PATH=%JAVA_HOME%\bin;
这将为所有使用 java 的应用程序设置 java 路径。

对于 ANT 使用,

ANT_HOME=C:\Program Files (x86)\apache-ant-1.8.2\bin;

并将 ANT_HOME 包含到 PATH 中,因此路径看起来像PATH=%JAVA_HOME%\bin;%ANT_HOME%;

于 2014-05-13T05:40:58.267 回答