我需要从 Java applet 运行单独的进程。我想使用位于 jar 中的类:
myApplet.jar
- packagename.MainApplet.class
- packagename.ProcToRun.class
File MainApplet
有接口(interface) Applet 实现,我想从这段代码内部运行 ProcToRun
类作为单独的进程。 ProcToRun 有 main 方法。
我试过这样的代码:
Process p = new ProcessBuilder("java", "-cp", ".;./myApplet.jar", ProcToRun.class.getName()).start();
和类似的(Runtime.exec(command)
,不同的符号 -\\,/或带有完整的 url),但我得到了:
Error: Could not find or load main class packagename.ProcToRun
Java.exe 可见,小程序已签名 - 拥有所有权限,使用 win 8.1,java 8 u 25。我认为类路径有问题,但我找不到解决方案。
最佳答案
Java 命令不能使用 URL 来让 Jar 运行,因此在尝试运行之前必须将 Jar 显式下载到本地文件系统。
但是在看到Process
时,有两个提示:
- 参见 When Runtime.exec() won't有关正确创建和处理流程的许多好技巧。然后忽略它引用
exec
并使用ProcessBuilder
创建进程。 - 但是applet 应该建立一个指向Jar 的
URLClassLoader
,然后调用感兴趣的构造函数或main(String[])
。如有必要,将调用包装在SwingWorker
中。
关于java - 使用内部类从 Java applet 运行单独的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27858085/