尽管在SO中可能已经多次询问过此问题,但我无法创建可执行Java文件(* .jar)。
我已经按照How do I create executable Java program?投票最高的解决方案中的说明进行了严格的尝试,但是当我双击jar文件时,什么也没有发生(没有弹出窗口)。请在这里告知可能出什么问题。
谢谢。
============更新==================
对于那些想知道的人,这是我使用的源代码:
HelloWorldSwing.java
package start;
import javax.swing.*;
public class HelloWorldSwing {
public static void main(String[] args) {
//Create and set up the window.
JFrame frame = new JFrame("HelloWorldSwing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel("Hello World");
frame.add(label);
//Display the window.
frame.pack();
frame.setVisible(true);
}
}
class Dummy {
// just to have another thing to pack in the jar
}
Manifest.mf
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.4
Created-By: 1.8.0_172 (Oracle Corporation)
Main-Class: HelloWorldSwing
=======================================
现在,我已经尝试了另一个* .java文件,同样的问题再次出现!有关详细信息,请参见下面的代码:
代码:
SwingExample.java
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;
public class SwingExample implements Runnable {
@Override
public void run() {
// Create the window
JFrame f = new JFrame("Hello, !");
// Sets the behavior for when the window is closed
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// Add a layout manager so that the button is not placed on top of the label
f.setLayout(new FlowLayout());
// Add a label and a button
f.add(new JLabel("Hello, world!"));
f.add(new JButton("Press me!"));
// Arrange the components inside the window
f.pack();
// By default, the window is not visible. Make it visible.
f.setVisible(true);
}
public static void main(String[] args) {
SwingExample se = new SwingExample();
// Schedules the application to be run at the correct time in the event queue.
SwingUtilities.invokeLater(se);
}
}
Manifest.mf
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.4
Created-By: 1.8.0_172 (Oracle Corporation)
Main-class: start.SwingExample
这里发生了什么事?
答案 0 :(得分:2)
在命令提示符下创建jar文件
启动命令提示符。导航到保存类文件的文件夹:
C:> cd \ mywork
设置路径以包含JDK的bin。例如:
C:\ mywork>路径c:\ Program Files \ Java \ jdk1.7.0_25 \ bin;%path%
编译您的课程:
C:\ mywork> javac * .java
创建清单文件和jar文件:
C:\ mywork>回声Main-Class:胡扯> manifest.txt
C:\ mywork> jar cvfm Craps.jar manifest.txt * .class
或
C:\ mywork> jar cvfe Craps.jar Craps * .class
测试您的jar:
C:\ mywork> Craps.jar
或
C:\ mywork> java -jar Craps.jar
答案 1 :(得分:1)
如果您的jar文件创建成功,则尝试使用一些提取程序将其打开以查看类文件。 对于Ubuntu使用存档管理器,对于Windows使用winRar。
答案 2 :(得分:0)
好的,当我将Manifest.mf更改为Main-Class: start.HelloWorldSwing
时,似乎问题已解决。显然,OscarRyz在他的解决方案How do I create executable Java program?中也指出了这一点,但是当我第一次尝试时,它似乎无法正常工作。
嗯...
============更新===============
基于进一步的测试,似乎以下代码行比OscarRyz建议的编译过程更好:
jar cvfm SwingExample.jar manifest.txt *.class
(参考:www.skylit.com/javamethods/faqs/createjar.html)