jar 文件在执行时不执行任何操作 (VSCode)

jar file doesn't do anything when executed (VSCode)

我这里有一个小程序,我想将其导出为 .jar 文件。当我使用 VSCode 的“导出 Jar...”选项(和 select Test 作为主 class)时,它创建了 jar 文件没有任何错误,但是当我 运行 它(通过双击)时,没有任何反应。但是,当我 运行 来自 VSCode 的代码时,它按预期工作(window 出现并显示“Hello World”)。 这是我的代码:

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

public class Test {

    public static void main(String[] args) {
        try {
            SwingUtilities.invokeAndWait(new Runnable() {
                @Override
                public void run() {
                    JFrame frame = new JFrame("Test");
                    frame.setSize(600, 400);
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setLocationRelativeTo(null);
                    frame.getContentPane().add(new JLabel("Hello World!"));
                    frame.setVisible(true);
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

如果你想 运行 你的 java 程序(当它编译在 jar 文件中时)你需要执行以下操作:

java -cp your-jar-name.jar Test

Test 是你的 class 的全名(包括包名)和 main 方法。

如果清单中定义了 Main-Class,您也可以这样做

java -jar your-jar-name.jar

如果您在某些操作系统中单击 jar 文件,则双击将不起作用。您可以使用 Linux 中的 .sh 脚本或 Windows 中的 .bat 脚本,然后单击此脚本。

您可以使用以下命令运行 jar:

java -jar jar-file-name.jar

当您双击 'executable jar' 时 OS 通常执行的操作是 运行

javaw -jar jar-file-name.jar

javaw 是 Java 的 'windowed' 版本,这意味着没有终端 window 可以打印控制台消息,但应用程序会显示它自己的 windows.这似乎不会发生在你的情况下。

要排除故障,请打开终端 window,cd 到包含您的 jar 的目录并执行

java -jar -jar-file-name.jar

现在您可以在控制台上查看是否发生错误。但请注意某些 jar 文件和可执行 jar 文件之间的区别是 META-INF/MANIFEST 文件。在那java -jar ...找到主要class到运行的信息,可能和你运行在IDE.

里的信息不一样