【问题标题】:Opening a jar file in a new terminal from existing java gui program从现有的 java gui 程序在新终端中打开 jar 文件
【发布时间】:2013-06-12 17:50:46
【问题描述】:

我有一个 Java GUI 程序,我想在用户单击指定按钮时从该程序在新终端(没有 GUI)中运行另一个 jar 文件。有人可以建议我该怎么做吗?

【问题讨论】:

  • 这是否会创建另一个 jvm 来运行该 jar 文件?
  • 这几乎是必须的,除非终端窗口托管了一个终端仿真器程序,通过管道或套接字进行通信。无论如何,答案取决于主机操作系统和窗口系统以及首选的终端窗口程序。
  • 是的,我的意思是应该
  • 我用 ProcessBuilder 尝试了一些东西,但它似乎不起作用
  • 在终端窗口中运行另一个 jar 的动机是什么。你只想运行罐子吗?它必须在(另一个)终端中吗?由于某种原因,它是否必须在另一个进程中?单独的 JAR 程序会接受任何输入吗?它需要什么样的终端能力?

标签: java jar terminal execute


【解决方案1】:

启动新终端需要使用 ProcessBuilder 或 System.exec 生成新进程。这取决于操作系统及其配置。在 linux xterm 中运行独立的 jar 文件是这样启动的:

 File dir = new File("/directory/to/the/jar/file");
    String jarName ="standalone.jar";
    ProcessBuilder processBuilder = new ProcessBuilder("/usr/bin/xterm","-e","java -jar "+jarName);
    processBuilder.directory(dir);
    processBuilder.start();

如果没有独立的 jar,则必须使用 -cp 参数将类路径指定到 java 可执行文件...

替代方案可能只是使用单独的 ClassLoader 并重定向 System.out 和 System.in 运行给定的 jar。这需要为正在运行的 jar 编写某种 GUI。如果只需要进程的输出并且不需要终端仿真,这并不难。只需将 System.out 重定向到某个 textarea。如果对运行的输入/输出有更多要求,那么可以使用用java编写的终端仿真器来为您做这些事情。

【讨论】:

    猜你喜欢
    • 2017-12-16
    • 1970-01-01
    • 2022-11-02
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 2016-08-16
    相关资源
    最近更新 更多