今天在Eclipse中写了用到 Runtime.getRuntime().exec("java MyTest"); 来启动一个新的java程序,无奈却无法启动MyTest类。
而这个程序在cmd中是可以完全正常运行的。于是我将MyTest.class(除去包名)复制到此工程的根目录下,突然发现MyTest程序启动
了!
我由此得出结论,使用Runtime.getRuntime().exec来启动其他java程序时, java虚拟机是在工程的根目录下开始查找这个类的,而这个类实际存在于bin目录下面。这时只要在命令中加入classpath的设置信息皆可,另外需加上包名。
最后修改代码如下:
Runtime.getRuntime().exec("java -classpath H://workspace//javawork//bin cn.itcast.io.MyTest");
或者
Runtime.getRuntime().exec("java -classpath .//bin cn.itcast.io.MyTest"); .代表当前目录.
或者
Runtime.getRuntime().exec("java -classpath bin cn.itcast.io.MyTest");
程序正常运行!