从java文件运行java文件

u7up0aaq  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(298)

这个问题在这里已经有答案了

从文件位置用java运行.exe文件(6个答案)
21天前关门了。
假设我有一行代码:

System.out.println("java ZipDirectory.java " + workspace);

这个打印出来的是

java ZipDirectory.java C:\Users\Dude\Desktop\Stuff

我如何让java真正执行上述操作,而不是仅仅在控制台中打印出来?
编辑:到目前为止,我已经试过这样做了,但还不能让functoid正常运行。

Runtime.exec("java ZipDirectory " + workspace);
&& 
Runtime.getRuntime().exec("java ZipDirectory " + workspace);

补充说明,因为我对java的了解不多,但下面是我使用的方法:

@Override
    public void perform(Run<?, ?> run, FilePath workspace, Launcher launcher, TaskListener listener) throws InterruptedException, IOException {
        System.out.println("java ZipDirectory.java " + workspace);
        Runtime.getRuntime().exec("java ZipDirectory " + workspace);
        run.addAction(new HelloWorldAction(name));
        //run.Action(new ZipDirectory.main(workspace))
        //ZipDirectory.main( workspace ) 
        listener.getLogger().println("Hello, " + name + "!");
        listener.getLogger().println("Workspace: " + workspace);

    }
lbsnaicq

lbsnaicq1#

要编译和运行java文件,可以使用processbuilder执行命令

File javaFile = new File("...");
String javaFileName = javaFile.getName();
String javaClassName = javaFile.getName().replaceAll(".java", "");

将java编译成字节码

ProcessBuilder compileProcess = new ProcessBuilder("javac", javaFileName);
compileProcess.directory(javaFileDirectory);
Process process1 = compileProcess.start();
process1.waitFor();

运行java字节码

ProcessBuilder executeProcess = new ProcessBuilder("java", javaClassName);
executeProcess.directory(javaFileDirectory);
Process process2 = executeProcess.start();
process2.waitFor()

您还可以从执行中获取输出并使用它,我在javafx的ide项目中使用了这段代码您可以在这里找到完整的代码以及从执行中读取的代码
https://github.com/amrdeveloper/astro
另一个想法是,如果每次使用反射api时都使用同一个类,并且可以从zipdirectory文件中选择任何方法,那么可以添加参数和参数

Class aClass = Class.forName("...");
Object instance = aClass.newInstance();
Method method = aClass.getMethod("functionName");
method.invoke(instance);
vohkndzv

vohkndzv2#

好的,在你回答之后,我现在提到你的问题:
您可以使用windows命令执行类似的操作 Runtime.exec() 参数是你在上面写的正确的,例如 Runtime.exec(java -jar ZipDirectory.jar) 你只需要小心,它是在文件夹中的 ZipDirectory.jar 否则您可以将完整路径设置为如下参数 Runtime.exec(jar -jar C: //.../ZipDirectory.jar) 要查看压缩是否已经完成,可以测试新创建的.zip文件是否已经在目标文件夹中。

相关问题