可执行jar文件不会执行

时间:2018-06-03 19:46:37

标签: java jar

前言:我对Java不是很有经验。我想编写一个基于Swing的窗口应用程序。创建和执行类文件有效但在创建jar文件后,双击文件时不执行该文件。我在Windows 10(64位)上使用SE 1.8.0_131。

我的步骤如下:

我已创建此测试文件

import java.awt.event.*; 
import javax.swing.*;

public class SwingTest {

    public static void main(String[] args){

        JFrame mainWindow = getMainWindow();

        mainWindow.setVisible(true);
    }

    public static JFrame getMainWindow(){
        JFrame frame = new JFrame("Hauptfenster");

        // Initialize Window
        frame.setLayout(null);
        frame.setSize(300, 300);

        // Close application on window close
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        // Create and add Close-button
        JButton exitButton = new JButton("Close");
        exitButton.addActionListener(ae -> System.exit (0));
        exitButton.setLocation(20, 20);
        exitButton.setSize(100, 40);
        frame.add(exitButton);

        return frame;
    }
}

然后我运行此命令来创建类文件:

javac SwingTest.java

这成功创建了类文件,我可以使用以下命令执行它:

java SwingTest

我创建了一个名为 SwingTest.mf

的清单文件
Manifest-Version: 1.0
Main-Class: SwingTest

然后我运行以下命令来创建jar文件(我根据this stackoverflow post编写了这个命令)

jar cfm SwingTest.jar SwingTest.mf *.class

这创建了jar文件,但是当我双击文件时没有任何反应(没有窗口或CLI弹出或闪烁,任务中没有进程)

创建可执行文件我错过了什么或做错了什么?

对于大量细节表示歉心,并提前致谢

3 个答案:

答案 0 :(得分:1)

感谢所有建议。我发现了问题。

阅读this page后,我注意到我的清单文件最后错过了一个新行。因此,我的类语句从未添加到jar文件中创建的清单中。在我的Swingtest.mf末尾添加新行并运行以下命令后,它最终生成了一个工作jar文件

moveItem()

答案 1 :(得分:0)

似乎" jar"扩展名与7-zip等其他工具相关联。执行以下操作:在资源管理器中按鼠标右键,在上下文菜单中选择"打开..."。选择导航到java.exe或更好的javaw.exe。选中复选框以始终使用此关联。然后,当你双击时,将调用Java,你的jar将被执行。

答案 2 :(得分:0)

  1. 创建新文件夹并放置SwingTest.java
  2. 然后编译您的课程javac SwingTest.java
  3. 使用以下内容创建文件夹META-INFMANIFEST.MF文件

    清单 - 版本:1.0
    Main-Class:SwingTest

  4. 运行以下命令jar cfm SwingTest.jar META-INF/MANIFEST.MF *.class

  5. 双击SwingTest.jar并享受。

  6. enter image description here