简体   繁体   English

error = 2,java.lang.ProcessBuilder.start中没有这样的文件或目录

[英]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_HOMEJAVA_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM