Runtime.getRuntime().exec()问题.

qq3553174gwfz 2012-02-28 07:34:33
我想用 Runtime.getRuntime().exec() 来运行下java编译好的class文件,比如那个文件是在d盘目录下。

Runtime.getRuntime().exec("java D:\\Test");

但是这样写运行不了,

我就手动运行了cmd java D:\\Test 也不能正常运行

但是如果首先进入 d:

然后在 java Test却能正常运行,

这些细节以前都没怎么注意。。

如果是这样的话那么

Runtime.getRuntime().exec 的路径要怎么写呢。。。
...全文
251 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰思雨 2012-02-28
  • 打赏
  • 举报
回复
首先要调试出命令行的正确指令
java -cp d:/ Test
楼主说的,java d:\\Test运行不了,要看是什么异常,一般都是因为classpath不正确引起的。

然后在用Runtime.getRuntime().exec("java -cp d:/ Test");试试看。

楼主每次运行程序,出现问题的时候,要积极分析抛出的异常,根据堆栈来学习技术。
peer2012 2012-02-28
  • 打赏
  • 举报
回复
最好用 ProcessBuilder


public void exec(Class klass, String [] args) throws IOException,
InterruptedException {
String javaHome = System.getProperty("java.home");
String javaBin = javaHome +
File.separator + "bin" +
File.separator + "java";
String classpath = System.getProperty("java.class.path");
String className = klass.getCanonicalName();

ArrayList<String> commond = new ArrayList<String>();
commond.add(javaBin);
commond.add("-cp");
commond.add(classpath);
commond.add(className);
if (args != null) {
commond.addAll(Arrays.asList(args));
}
builder = new ProcessBuilder(commond);

// builder = new ProcessBuilder(
// javaBin, "-cp", classpath, className);

Process process = builder.start();
}

peer2012 2012-02-28
  • 打赏
  • 举报
回复
java -cp D:\\ test.class
爱摸鱼de老邪 2012-02-28
  • 打赏
  • 举报
回复
用这个:exec(String command,String[] envp,File dir),在有指定环境和工作目录的独立进程中执行指定的字符串命令。
command - 一条指定的系统命令。
envp - 字符串数组,其中每个元素的环境变量的设置格式为 name=value;如果子进程应该继承当前进程的环境,或该参数为 null。
dir - 子进程的工作目录;如果子进程应该继承当前进程的工作目录,则该参数为 null。

sun0322 2012-02-28
  • 打赏
  • 举报
回复
环境变量CLASSPATH中添加D:\Test.class试试
sun0322 2012-02-28
  • 打赏
  • 举报
回复
classpath

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧