2011-12-22 269 views
0

我创建具有GUI .jar文件:创建一个.jar文件

jar cmf mainClass patcherFull.jar pack 

我得到与上面的创建命令没有错误,但随后运行.jar文件不执行任何操作在Windows中,与Java本身输出运行它:

java -jar patcherFull.jar 
java.lang.NoClassDefFoundError: patcherFull 
Caused by: java.lang.ClassNotFoundException: patcherFull 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
Could not find the main class: patcherFull. Program will exit. 
Exception in thread "main" 

这是我的代码结构:

public class patcherFull extends JPanel implements ActionListener, PropertyChangeListener 
{ 

    private JProgressBar progressBar; 
    private JButton startButton, closeButton; 
    private JLabel status; 
    private Task task; 

    class Task extends SwingWorker<Void, Void> { 
     @Override 
     public Void doInBackground() 
     { 
     } 

     @Override 
     public void done() 
     { 
     } 
    } 

    public patcherFull() 
    { 
    } 

    public void actionPerformed(ActionEvent evt) 
    { 
    } 

    public void propertyChange(PropertyChangeEvent evt) 
    { 
    } 

    private static void createAndShowGUI() 
    { 
    } 

    public static void main(String[] args) 
    { 
     javax.swing.SwingUtilities.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       createAndShowGUI(); 
      } 
     }); 
    } 
} 

这是我mainClass清单FIL e(在最后有一个新行):

Main-Class: patcherFull 

我的代码结构中有什么问题吗?作为参考,“pack”文件夹包含3个生成的.class文件,2个依赖项(一个jpg和一个exe),然后是“patcherFull.java”文件。

这里是关于的.jar里面是什么的一些信息:

$ jar tf patcherFull.jar 
META-INF/ 
META-INF/MANIFEST.MF 
pack/ 
pack/banner.jpg 
pack/patcherFull$1.class 
pack/patcherFull$Task.class 
pack/patcherFull.class 
pack/patcherFull.java 
pack/wget.exe 

回答

2

主类应该是pack.patcherFull,不patcherFull,使之符合您的结构在JAR文件。

另请注意,约定规定它应该是pack.PatcherFull

+0

所以你的意思是改变我的清单文件为“Main-Class:pack.patcherFull”?我这样做的时候会出错。当您创建罐子时, – carget 2011-12-22 23:22:18

+0

站在'pack'内 – 2011-12-22 23:46:27