【问题标题】:How to run a java program without a console [closed]如何在没有控制台的情况下运行 java 程序 [关闭]
【发布时间】:2010-07-03 09:13:24
【问题描述】:

即使终端关闭,我也需要运行 java 程序.... 在服务器中......

【问题讨论】:

  • 如果你的点用完了,那就去吧:........ ..................................................... ..................................................... ..........

标签: java command-line headless


【解决方案1】:

在 Unix 和 GNU/Linux 系统上,您可以像这样使用 nohup 运行程序,假设它是一个 jar:

nohup java -jar program.jar &

要将程序的输出运行到文本文件中以便以后查看它,您可以这样做:

nohup java -jar program.jar > program.log &

也有一些包可以将您的 Java 程序包装到服务中,这比纯java 进程更易于管理。

您可能还想使用 "process wrapper"Launch4J 可能吗?)给您的进程一个有意义的名称,否则您的所有 Java 程序将在该进程中显示为 java列表,这不是很有指示性。

【讨论】:

    【解决方案2】:

    nohup 的“替代”是screenscreen 非常有用,它允许您运行任何任务、分离屏幕并让它在后台运行。您可以稍后继续。

    运行任务:

    screen <command_you_want_to_run>
    

    然后&lt;ctrl&gt; &lt;a&gt; &lt;d&gt; 与 屏幕会话。

    下次登录时,您可以 重新连接到屏幕会话:

    screen -r
    

    如果您有多个屏幕会话 跑步时你会看到 他们的详细信息,并且可以连接到他们 像这样:

    screen -r 1234.pts-1.hostname
    

    ...1234.pts-1.hostname 是一 来自输出的返回值 从屏幕 -r。

    【讨论】:

      【解决方案3】:

      使用javaw 命令代替java

      【讨论】:

      • 当用户退出时它仍然会被关闭。
      • @Michael,这个问题不清楚,我以为他的意思是控制台不应该在应用程序运行时运行。
      【解决方案4】:

      您想使用headless mode。这将导致任何尝试与屏幕、键盘、鼠标等通信的调用失败,但也意味着您不需要 X 服务器(在 Unix 上)或访问控制台(在 Windows 上)。

      【讨论】:

      • 这仅在您使用与 GUI 相关的类时才相关,而大多数服务器应用程序从不这样做。
      • 这与在服务器上处理图像非常相关,因为所有图像处理类都依赖于 AWT。使用 headless 将为您提供不需要窗口的 AWT 的更简单版本。
      • 如果您在一个甚至可能没有图形界面的程序中使用将后台任务放在 AWT 线程上的惰性线程技巧也很重要。
      猜你喜欢
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2020-09-20
      • 2010-10-24
      • 1970-01-01
      • 2014-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多