前言:我对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弹出或闪烁,任务中没有进程)
创建可执行文件我错过了什么或做错了什么?
对于大量细节表示歉心,并提前致谢
答案 0 :(得分:1)
感谢所有建议。我发现了问题。
阅读this page后,我注意到我的清单文件最后错过了一个新行。因此,我的类语句从未添加到jar文件中创建的清单中。在我的Swingtest.mf末尾添加新行并运行以下命令后,它最终生成了一个工作jar文件
moveItem()
答案 1 :(得分:0)
似乎" jar"扩展名与7-zip等其他工具相关联。执行以下操作:在资源管理器中按鼠标右键,在上下文菜单中选择"打开..."。选择导航到java.exe或更好的javaw.exe。选中复选框以始终使用此关联。然后,当你双击时,将调用Java,你的jar将被执行。
答案 2 :(得分:0)