【问题标题】:Launching jar file without terminal在没有终端的情况下启动 jar 文件
【发布时间】:2016-02-06 23:15:27
【问题描述】:

我已将我的 Java 项目从 Eclipse 导出为“可运行的 JAR 文件”,并带有“将所需的库提取到生成的 JAR 中”。当我尝试通过双击启动它时,没有任何反应,只是文件闪烁。当我尝试从java -jar Main.jar 这样的终端运行它时,它工作正常。

Main.java

class Main
{
public static void main(String[] args)
{
   System.out.println("Hello");
}

在看到一些stackoverflow答案后,我还提取了jar文件以检查MANIFEST.MF文件

清单.MF

Manifest-Version: 1.0
Class-Path: .
Main-Class: Main

Java 版本

java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)

操作系统

OS X El Capitain
Version 10.11.13

【问题讨论】:

    标签: java eclipse jar


    【解决方案1】:

    双击执行它也可以正常工作。但由于这个程序很短,它会快速打印“Hello World”并再次关闭。这让你觉得什么都没发生。添加代码的最后一行

    try{
        Thread.sleep(10000);
    }catch(Exception e){}
    

    让它运行更长时间,然后重试。

    【讨论】:

    • 什么都没有发生。文件只是闪烁,仅此而已。如果我完全退出应用程序,终端不会启动。(如果我自己启动终端并尝试通过双击启动 jar,结果相同)。
    【解决方案2】:

    问题是当你双击 jar 文件时,操作系统只会在应用程序的生命周期内启动一个终端。由于您的只有一条线并且立即终止,因此终端也立即消失。

    如果您愿意,可以在完成执行后让程序挂起,如下所示:

    System.out.println("Hello");
    while(true) {
        synchronized (Main.class) {
            try {
                Main.class.wait();
            } catch (InterruptedException e) {
            }
        }
    }
    

    这将无限期地等待,直到用户手动终止程序。

    【讨论】:

    • 什么都没有发生。文件只是闪烁,仅此而已。如果我完全退出应用程序,终端不会启动。(如果我自己启动终端并尝试通过双击启动 jar,结果相同)。
    猜你喜欢
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 2013-08-28
    • 1970-01-01
    • 2017-06-18
    • 2020-12-17
    • 2017-01-04
    相关资源
    最近更新 更多