Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何运行另一个目录中的.class文件_Java_Exec - Fatal编程技术网

Java 如何运行另一个目录中的.class文件

Java 如何运行另一个目录中的.class文件,java,exec,Java,Exec,我的问题是如何使用exec或ProcessBuilder类在目录中运行.class java文件。只有当.class文件与java程序位于同一目录下时,这才有效。是否要生成一个全新的进程?那你应该用 Runtime.getRuntime().exec(new String[] {"java","-cp","/path/to/classes/dir/","com.foo.MyClass"}); 如果您想在同一个过程中得到一些东西,可以创建一个新的类加载器,它知道如何加载您的.class文件。然后

我的问题是如何使用exec或ProcessBuilder类在目录中运行.class java文件。只有当.class文件与java程序位于同一目录下时,这才有效。

是否要生成一个全新的进程?那你应该用

Runtime.getRuntime().exec(new String[] {"java","-cp","/path/to/classes/dir/","com.foo.MyClass"});

如果您想在同一个过程中得到一些东西,可以创建一个新的类加载器,它知道如何加载您的.class文件。然后可以使用反射从类加载器获取类对象,并调用其主方法或类似的方法。您将需要使用反射,因为该类在默认类加载器中不可用。

问题已解决,伙计们,感谢您的回复…:

我用过的解决方案

字符串路径=D:\work//我的程序要执行的路径

字符串程序=测试//我的程序名


ProcessBuilder pb=新的ProcessBuilderjava,-classpath,path,program

您是否考虑过比使用exec更简单的替代方案?例如,将类添加到类路径中,然后以通常的Java方式导入/调用它?我在exec中遗漏了一些参数,即-cp,用于设置类路径,如果您需要单类文件以外的任何东西,Java不会以这种方式启动。您需要给出类路径的绝对路径,然后给出完全限定的类名。Java不能通过提供类文件来工作。谢谢Mark,更新我的示例。如果你回到这个站点,你应该接受你自己的答案。