使用Runtime.exec(…)从另一个Java程序执行一个Java程序
我想要执行的测试程序接受一个参数——一个文件名——并在新文件的顶部制作一个文件副本,该文件的行为“ThisaModifiedVersion.”。当我单独测试这个程序时,它工作并生成一个新文件 然后我编写了调用该文件的程序:使用Runtime.exec(…)从另一个Java程序执行一个Java程序,java,process,runtime.exec,Java,Process,Runtime.exec,我想要执行的测试程序接受一个参数——一个文件名——并在新文件的顶部制作一个文件副本,该文件的行为“ThisaModifiedVersion.”。当我单独测试这个程序时,它工作并生成一个新文件 然后我编写了调用该文件的程序: public static void main(String[] args) { try { Process p = Runtime.getRuntime.exec("java Tester.java inputfilename.txt");
public static void main(String[] args) {
try {
Process p = Runtime.getRuntime.exec("java Tester.java inputfilename.txt");
p.waitFor();
System.out.println("Done");
} catch(Exception e) {
System.out.println("Error");
System.exit(0);
}
}
上面的程序打印出“完成”,但它从未对我传入的文件进行过修改。然后我在另一个程序中放入一些println()。当我单独运行该程序时,它会打印出这些语句,但当我试图从上面的程序调用它时,它没有。如何修复此问题?您必须先编译
.java
文件,然后再启动它:
编译(包含主方法的类):
发布:
java Tester inputfilename.txt
您必须先编译
.java
文件,然后再启动它:
编译(包含主方法的类):
发布:
java Tester inputfilename.txt
应该是:
"java Tester inputfilename.txt"
但请帮自己一个忙,阅读(并实施)所有的建议
这可能会解决其他问题。如果没有,则应提供更多关于故障原因的信息
然后忽略它引用的exec
,并使用ProcessBuilder
构建流程。还可以将字符串arg
分解为字符串[]args
,以说明本身包含空格的参数
应该是:
"java Tester inputfilename.txt"
但请帮自己一个忙,阅读(并实施)所有的建议
这可能会解决其他问题。如果没有,则应提供更多关于故障原因的信息
然后忽略它引用的exec
,并使用ProcessBuilder
构建流程。还可以将String arg
分解为String[]args
,以说明本身包含空格的参数。Jari告诉了您为什么它通常不起作用。但是关于输出:您必须明确地读取从那里开始的程序生成的输出。再看看Jari告诉你的为什么它一般不起作用。但是关于输出:您必须明确地读取从那里开始的程序生成的输出。再看看我添加的行(在:Process p=Runtime.getRuntime.exec(“java Tester.java inputfilename.txt”);之前)行:Runtime.getRuntime().exec(“javac Tester.java”);然后运行程序。它仍然不起作用。我的语法错了吗?打开cmd
,手动运行这个东西,告诉我你得到了什么错误。我得到的消息:线程“main”中的异常java.lang.NoClassDefFoundError:Tester/java导致:java.lang.ClassNotFoundException:Tester.java at java.net.URLClassLoader$1.run(URLClassLoader.java:202)java.net.URLClassLoader.findClass(URLClassLoader.java:190)java.lang.ClassLoader.loadClass(ClassLoader.java:306)sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)java.lang.ClassLoader.loadClass(ClassLoader.java:247)的java.security.security.AccessController.doPrivileged(本机方法)是另一个问题,检查此项或仅用谷歌搜索。.NoClassDefFoundError:Tester/java
表示您在使用java
命令时仍在添加.java
扩展名!Jari在那之前一个小时建议你把它拿走!我添加了(在:Process p=Runtime.getRuntime.exec(“java Tester.java inputfilename.txt”);行之前)行:Runtime.getRuntime().exec(“javac Tester.java”);然后运行程序。它仍然不起作用。我的语法错了吗?打开cmd
,手动运行这个东西,告诉我你得到了什么错误。我得到的消息:线程“main”中的异常java.lang.NoClassDefFoundError:Tester/java导致:java.lang.ClassNotFoundException:Tester.java at java.net.URLClassLoader$1.run(URLClassLoader.java:202)java.net.URLClassLoader.findClass(URLClassLoader.java:190)java.lang.ClassLoader.loadClass(ClassLoader.java:306)sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)java.lang.ClassLoader.loadClass(ClassLoader.java:247)的java.security.security.AccessController.doPrivileged(本机方法)是另一个问题,检查此项或仅用谷歌搜索。.NoClassDefFoundError:Tester/java
表示您在使用java
命令时仍在添加.java
扩展名!Jari在那之前一个小时建议你把它拿走!