0

我在下面做了:

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

2 回答 2

4

我假设您有\\t并且没有\t,并且您正在从错误流中读取,因此您可以看到任何错误。\t是制表符。

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

转储你得到的错误,你应该看到问题。

于 2012-08-06T08:05:50.660 回答
1

java.lang.Process 的 Javadoc 说

父进程使用这些流向子进程提供输入并从子进程获取输出。由于部分原生平台只为标准输入输出流提供有限的缓冲区大小,未能及时写入子进程的输入流或读取输出流可能会导致子进程阻塞,甚至死锁。

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

于 2012-08-06T08:18:13.103 回答