我無法在Java代碼中運行另一個Java進程。 它應該在後臺運行,所以不需要使用流或類似的東西。Java - 使用exec()方法運行另一個進程
我已經試過是標準的方法找到幾乎任何地方:
private static Runtime rt = Runtime.getRuntime();
private static Process pr;
在我的主要方法我調用exec()方法是這樣的:
pr = rt.exec("java -cp /home/luka/workspace/SocketServer SocketServer");
拋出的大量出於某種原因的例外。當然,有問題的應用程序已經編譯爲.class文件。
我也試過,發現here:
pr = rt.exec(new String[] { "/bin/bash", "-c", "java -classpath /home/luka/workspace/SocketServer SocketServer" });
當我嘗試使用終端執行相同的命令,它工作得很好。 我認爲這可能是一個安全的事情,但我不太確定,因爲我可以執行上述命令,而不需要「sudo」。
另外,當主進程關閉時,這行代碼是否需要或正在銷燬子進程?
pr.destroy();
我試圖在Linux上使用Eclipse來運行此操作。 如果這是一個重複的問題,我很抱歉,但我經歷了大多數類似的問題,但無法找到合適的解決方案。
例外:
輸出的System.out.println(pr.getErrorStream().toString());
System.out.println(pr.getInputStream().toString());
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.7.0_25]
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) ~[na:1.7.0_25]
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) ~[na:1.7.0_25]
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) ~[na:1.7.0_25]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.7.0_25]
at java.net.Socket.connect(Socket.java:579) ~[na:1.7.0_25]
at java.net.Socket.connect(Socket.java:528) ~[na:1.7.0_25]
at java.net.Socket.<init>(Socket.java:425) ~[na:1.7.0_25]
at java.net.Socket.<init>(Socket.java:208) ~[na:1.7.0_25]
at src.MainWindow.connect(MainWindow.java:213) ~[JAVA_vj10/:na]
at src.MainWindow.access$2(MainWindow.java:209) ~[JAVA_vj10/:na]
at src.MainWindow$1.run(MainWindow.java:67) ~[JAVA_vj10/:na]
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251) ~[na:1.7.0_25]
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733) ~[na:1.7.0_25]
at java.awt.EventQueue.access$200(EventQueue.java:103) ~[na:1.7.0_25]
at java.awt.EventQueue$3.run(EventQueue.java:694) ~[na:1.7.0_25]
at java.awt.EventQueue$3.run(EventQueue.java:692) ~[na:1.7.0_25]
at java.security.AccessController.doPrivileged(Native Method) ~[na:1.7.0_25]
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) ~[na:1.7.0_25]
at java.awt.EventQueue.dispatchEvent(EventQueue.java:703) ~[na:1.7.0_25]
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) ~[na:1.7.0_25]
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) ~[na:1.7.0_25]
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) ~[na:1.7.0_25]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) ~[na:1.7.0_25]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) ~[na:1.7.0_25]
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) ~[na:1.7.0_25]
是:
[email protected] [email protected]
如果你可以發佈異常,那就太好了。 –
@SotiriosDelimanolis我已更新我的帖子。 – Venom
看起來異常與您發佈的代碼有關。 –