Java 在绝对路径上执行参数Runtime.getRuntime().exec(args)时出错
我正在尝试执行以下命令: * “cmd/c:\stuff\dev\phantomjs\bin\phantomjs.exe downloadDocument.js " * 当我把它放在一些批处理Windows文件中时,它会工作。问题是,我正试图用java实现这一点,到目前为止运气不好,还尝试了不同的路径(可能是点问题)。 到目前为止运气不好。 我真的需要帮助! 我在进程的输出流中得到一个错误 “无法打开'downloadDocument.js'” 我唯一的猜测是,我需要在当前路径中才能执行代码 我错过了什么 代码如下:Java 在绝对路径上执行参数Runtime.getRuntime().exec(args)时出错,java,batch-file,runtime,runtime.exec,Java,Batch File,Runtime,Runtime.exec,我正在尝试执行以下命令: * “cmd/c:\stuff\dev\phantomjs\bin\phantomjs.exe downloadDocument.js " * 当我把它放在一些批处理Windows文件中时,它会工作。问题是,我正试图用java实现这一点,到目前为止运气不好,还尝试了不同的路径(可能是点问题)。 到目前为止运气不好。 我真的需要帮助! 我在进程的输出流中得到一个错误 “无法打开'downloadDocument.js'” 我唯一的猜测是,我需要在当前路径中才能执行代码 我
public class UrlUtils {
private static String SCRIPT_PATH = "C:\\stuff\\dev\\phantomjs\\bin\\phantomjs.exe";
private static String SCRIPT_NAME = "downloadDocument.js";
public static String execPhantom(String url) throws Exception {
Process p;
try{
File f = new File(SCRIPT_PATH);
String [] args = new String[5];
args[0] = "cmd";
args[1] = "/c";
args[2] = f.getCanonicalPath().toString();
args[3] = SCRIPT_NAME;
args[4] = url;
p = Runtime.getRuntime().exec(args);
.......
.......
您还可以尝试提供downloadDocument.js的完整路径,也许这有助于您还可以尝试使用.exec版本,该版本包含两个附加参数(环境和工作目录)。看看Dennis van Gils的文档,你说得对,我的EXE文件和我的JS脚本在同一个位置,但是,我在不同的位置运行我的java代码(取决于我的工作区),所以基本上,如果我运行EXE文件,它不会威胁到作为EXE位置的“当前位置”,而是威胁到作为父位置的它,(或者运行EXE的线程的位置,这是我的java工作区代码)。希望它有意义。谢谢!没问题。另外,如果您使用@DennisvanGils而不是我的名字,我可以在给我发消息时看到通知。