2012-08-06 42 views
0

我做了如下:Runtime.getRuntime()。exec(command);虚拟硬盘驱动器不工作?

subst A: "C\Desktop" 

现在,从Java代码:

String command= "java -jar A:\test.jar" 
Process process = Runtime.getRuntime().exec(command); 

的JVM似乎在这里,从来没有挂执行这条线。当我运行通过"java -jar C:\Desktop\test.jar".它执行成功。

Runtime.getRuntime是否无法解析虚拟硬盘? 谢谢

回答

4

我假设你有\\t而不是\t并且你正在从错误流中读取,所以你可以看到任何错误。 \t是制表符。

(MS-DOS的使用\作为路径分隔符的乐趣;)

转储出你所得到的错误,你应该看到这个问题。

+1

+1''t'(想知道为什么它可以在另一个驱动器上工作) – dacwe 2012-08-06 08:15:02

+0

噢对不起,我没有面对任何问题,我会照顾它。我的问题是有些事情处理类没有找到。我得到这个错误: – yami 2012-08-06 09:42:59

+0

你使用多个库?一个罐子可以引用另一个罐子,如果该路径不包含驱动器盘符,它可能会使用一个你不期望的盘符。 – 2012-08-06 09:47:01

1

java.lang.Process中的Javadoc中说

The parent process uses these streams to feed input to and get output from the subprocess. Because some native platforms only provide limited buffer size for standard input and output streams, failure to promptly write the input stream or read the output stream of the subprocess may cause the subprocess to block, and even deadlock.

这意味着你没有读出或写入及时的数据,导致缓冲区溢出关联的进程。这可能是一个可能的问题。请阅读javaworld上的article,并考虑及时在单独的线程中实现读取和写入。