将String作为params从一个Java App传递到另一个Java App

我正在尝试将String作为参数从一个Java Aplications传递到第二个作为StartUp参数

例如,我有必须在System.exit(0);之前调用启动另一个Java Aplication(仅包含JOptionPane,JDialog或简单JFrame)的System.exit(0); ,我试图从关闭应用程序发送一些描述到另一个,

这些代码是模拟我尝试过的,在这种forms下,代码正常工作并将字符串显示到JTextArea …

  import java.io.IOException; import java.util.concurrent.*; public class TestScheduler { public static void main(String[] args) throws InterruptedException { ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(10); executor.setContinueExistingPeriodicTasksAfterShutdownPolicy(true); executor.setExecuteExistingDelayedTasksAfterShutdownPolicy(true); for (int i = 0; i < 10; i++) { final int j = i; System.out.println("assign : " + i); ScheduledFuture future = executor.schedule(new Runnable() { @Override public void run() { System.out.println("run : " + j); } }, 2, TimeUnit.SECONDS); } System.out.println("executor.shutdown() ...."); executor.shutdown(); executor.awaitTermination(10, TimeUnit.SECONDS); try { Process p = Runtime.getRuntime().exec("cmd /c start java -jar C:\\Dialog.jar 'Passed info'"); } catch (IOException ex) { ex.printStackTrace(); } System.out.println("System.exit(0) ....."); System.exit(0); } private TestScheduler() { } } // import java.awt.*; import java.util.ArrayList; import javax.swing.*; public class Main { private static ArrayList list = new ArrayList(); public Main() { JFrame frm = new JFrame(); JTextArea text = new JTextArea(); if (list.size() > 0) { for (int i = 0; i  0) { for (String s : args) { list.add(s); System.out.print(s + " "); } } Main m = new Main(); } } 

我的问题 :

EDIT1:如果存在另一种方法,如何从一个Java Aplication(必须称为System.exit(0);)传递一些值到另一个Java Aplication,另一种方式,因为我尝试使用Process / ProcessBuilder

EDIT2:我的crosspost http://forums.oracle.com/forums/thread.jspa?threadID=2229798&tstart=0

OTN接受了答复

在OTN上接受了jverd的回答

是的,还有其他方法。 这种方式不能满足您的需求吗?

  1. 还有另一个带有数组的exec()签名,其中第一个元素是命令,其余元素是args。 它可能是也可能不是varargs电话。 这看起来像这样,虽然它可能不会像我一样完全正常工作。

    exec(“cmd”,“/ c”,“start”,“java”,“ – jar”,“C:\ Dialog.jar”,“Passed info”);

// 要么

 exec(new String[] {"cmd", "/c", "start", "java", "-jar", "C:\\Dialog.jar", "Passed info"}); 
  1. 您可以将信息放在第二个进程读取的文件中。

  2. 您可以将信息存储在第二个进程查询的数据库中。

  3. 您可以让一个进程打开一个ServerSocket,另一个进程连接到它并以这种方式发送数据。

  4. 您可以使用更高级别的消息传递工具,如JMS,Active MQ等。

  5. 你可以使用RMI。

  6. 你可以使用CORBA。

我相信还有其他方法。

我不知道哪种方法最适合您的需求。 这是你需要弄清楚的,虽然如果你不能决定,如果你在这里发布有关你的要求的更多细节,有人可能会提供一些建议。

老兄,

读取当运行时exec不会 ,如果你仍然卡住,请回复我们。

这是一篇好文章。 我猜你的“ 参数有问题”;-)

干杯。 基思。