2013-05-14 107 views
0

如何从类文件创建.jar可执行文件?我在网上发现了非常简单的指令,包括创建一个清单,然后从终端凝结它。无法创建工作.jar

复杂因素,然而,我编程这个东西的方式,类文件是它自己的客户端...它在编译器中工作正常,但我认为这可能以某种方式更改标准清单?我的程序看起来大致是这样的:

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

public class Schedule implements ActionListener { 
    public static void main(String[] args) { 
    Schedule gui = new Schedule(); 
    } 
    public Schedule() { 
    public void actionPerformed(ActionEvent event) { 
     //... 
    } 
    //... 
    private class CheckboxListener implements ItemListener { 
     //... 
    } 
    } 
} 

我编这个计划程序后,编译器中加入了一堆其他的类目录的,所以在目录中现在有Schedule.class,一些所谓的Schedule$1.classSchedule$CheckboxListener.class和一堆其他类(格式类似于Schedule$CheckboxListener.class)。

简单的说,我想知道我的清单文件应该是什么样子。现在,我有:

Main-Class: Schedule 

但这不会产生工作的.jar文件。我究竟做错了什么?

+1

当你说“工作”时,你期待什么?你如何调用JAR文件,它在做什么?你是否收到错误消息? – Gian 2013-05-14 03:09:14

+0

当我双击Schedule.jar时,我收到以下错误消息: 线程“main”中的异常java.lang.NoClassDefFoundError:安排Schedule $ CheckBoxListener \t。 (Schedule.java:49) \t在Schedule.main(Schedule.java:8) 造成的:抛出java.lang.ClassNotFoundException:计划$ CheckboxListener \t在java.net.URLClassLoader的$ 1.run(URLClassLoader.java: 202) \t在java.security.AccessController.doPrivileged(本机方法) \t在java.net.URLClassLoader.findClass(URLClassLoader.java:190) \t在java.lang.ClassLoader.loadClass(ClassLoader.java:306) ... – user2379931 2013-05-14 03:15:23

+0

您必须包含javac编译器生成的那些额外的类。 $表示内部类。 – 2013-05-14 03:25:35

回答

0

你真的把类文件放在Jar文件中吗?你从来没有提到这样做。见Creating a JAR File,或基本上它的工作原理是这样的:

jar cf file.jar input-file(s) 

可以使用,可以打开Zip文件,如Winzip或7-Zip的任何程序中打开一个jar文件。或者你可以使用命令行工具jar

jar tf file.jar 
+0

是的,那是票。非常感谢你和其他人! – user2379931 2013-05-14 04:06:16

+0

太棒了,不客气。由于这回答了您的问题,并且由于您是StackOverflow的新手,请参阅http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 – 2013-05-14 15:17:43