[英]error=2, No such file or directory at java.lang.ProcessBuilder.start
I'm using Fedora 18 and JDK 1.7.13 installed in /usr/java
. 我正在使用
/usr/java
安装的Fedora 18和JDK 1.7.13。 All executable files under bin
folder have -rwxr-xr-x
permission. bin
文件夹下的所有可执行文件都具有-rwxr-xr-x
权限。 I set both ANT_HOME
and JAVA_HOME
in my ~/.bashrc
as: 我在
~/.bashrc
设置了ANT_HOME
和JAVA_HOME
:
export ANT_HOME=/home/m/application/apache-ant-1.8.2
export JAVA_HOME=/usr/java/jdk1.7.0_13/
and I have a build.xml
file which says: 我有一个
build.xml
文件,上面写着:
<exec dir="${java.home}/bin/" executable="keytool"/>
but after running ant I got this exception: 但是在运行ant之后我得到了这个例外:
/home/m/workspace/build.xml:58: Execute failed: java.io.IOException: Cannot run program "keytool" (in directory "/usr/java/jdk1.7.0_13/jre/bin"): error=2, No such file or directory at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) at java.lang.Runtime.exec(Runtime.java:615) at org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher.exec(Execute.java:827) at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:445) .
/home/m/workspace/build.xml:58:执行失败:java.io.IOException:无法运行程序“keytool”(在目录“/usr/java/jdk1.7.0_13/jre/bin”中):error = 2,org.apache.tools.ant.taskdefs.Execute $中java.lang.Runtime.exec(Runtime.java:615)java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)上没有这样的文件或目录。 Java13CommandLauncher.exec(Execute.java:827)位于org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:445)。 .
。 .
。
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
在org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Any idea? 任何想法?
Try: 尝试:
export ANT_HOME=/path/to/ant
export PATH=$ANT_HOME/bin:$PATH
<exec executable="keytool"/>
or: 要么:
<exec executable="${java.home}/bin/keytool"/>
As the dir
attribute tells Ant in which directory to execute the binary, not what the path to it is. 由于
dir
属性告诉Ant在哪个目录中执行二进制文件,而不是它的路径是什么。
It seems when JAVA_HOME
is set in my ~/.bashrc
it works, otherwise it doesn't! 似乎当我的
~/.bashrc
设置JAVA_HOME
时它可以工作,否则它不会!
Also when searching my system for alternative I found that the keytool
command is not even in my slaves! 另外,在搜索我的系统以寻找替代方案时,我发现
keytool
命令甚至不在我的奴隶中!
Here is my log from running alternatives --display java
: 这是我运行
alternatives --display java
日志alternatives --display java
:
java - status is manual.
link currently points to /usr/java/latest/jre/bin/java
/usr/lib/jvm/jre-1.7.0-openjdk/bin/java - priority 170009
slave keytool: /usr/lib/jvm/jre-1.7.0-openjdk/bin/keytool
slave orbd: /usr/lib/jvm/jre-1.7.0-openjdk/bin/orbd
slave pack200: /usr/lib/jvm/jre-1.7.0-openjdk/bin/pack200
...
slave jre_exports: /usr/lib/jvm-exports/jre-1.7.0-openjdk
slave jre: /usr/lib/jvm/jre-1.7.0-openjdk
slave java.1.gz: /usr/share/man/man1/java-java-1.7.0-openjdk.1.gz
slave keytool.1.gz: /usr/share/man/man1/keytool-java-1.7.0-openjdk.1.gz
...
/usr/java/latest/jre/bin/java - priority 20000
slave keytool: (null)
slave orbd: (null)
slave pack200: (null)
...
Current `best' version is /usr/lib/jvm/jre-1.7.0-openjdk/bin/java.
so I asked my root to remove jdk
from alternatives till I can address it directly by $JAVA_HOME
whenever it's needed. 所以我让我的root删除了替代品中的
jdk
,直到我可以在需要的时候通过$JAVA_HOME
直接解决它。 Fortunately, problem solved. 幸运的是,问题解决了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.