2009-06-06 57 views
0

我在d简单Demo.java文件:\ jarConcepts目录:将罐子到您的程序

import javax.swing.* ; 

class Demo{ 
    public static void main(String args[]){ 
     JFrame frame = new JFrame("") ; 
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE) ; 

     Class c = null ; 
     try{ 
      c = Class.forName("com.mysql.jdbc.Driver") ; 

      //com.mysql.jdbc.Driver class is in a jar file 
      //whose class path is set in the environment variable(explicitly done by me) 

      //when i am executing Demo.class using java command, it displays frame with OK title 
      //but if i execute this by creating a jar, it enables to load the 
      //com.mysql.jdbc.Driver class, 
      //thus displaying frame with Sorry title 

      frame.setTitle("OK") ; 
     } 
     catch(ClassNotFoundException cnfe){ 
      frame.setTitle("Sorry") ; 
     } 

     frame.setVisible(true) ; 
    } 
} 

我准备在d一个manifest.txt文件:用以下文字\ jarConcepts:

主类:演示

类路径:C:\ Program Files文件\的MySQL \ MySQL的工具5.0 \的java \ lib中\ MySQL的连接器的Java-5.0.4-bin.jar

的情况下,我创建使用

罐子-cvfm Demo.jar添加manifest.txt的.class

按照相同的目录中的jar文件的输出:

加入清单 添加:Demo.class(in = 743)(out = 505)(泄气32%)

但是,当我执行生成的jar文件时,它显示一条错误消息,

找不到主类。程序将会退出。

我不明白为什么会这样,怎么,当我用下面的清单的代码创建jar文件:

主类:演示

我得到一个完美的可执行文件Demo.jar,唯一的问题是,它不是加载从类的路径] 类路径,当我试图在清单中添加路径,它不工作...... PLZ帮助... ...

回答

0

确保Main-Class和Class-Path条目之间的清单文件中没有换行符。您还应该确保在Class-Path条目后面有一个换行符。

另外,我会建议Demo是一个公共类,如果它被用作主类。

+0

那么为什么jar文件执行时,当我只使用主类的标签,而不是使用两个 主类,类路径标签...... – mogli 2009-06-06 22:05:11

0

您不应该依赖清单类路径,因为清单文件有一些漂亮的strange rules,包括换行符。

相反,使用命令行参数构建一个类路径和使用主类参数java -cp Demo.jar:mysql-connector.jar Demo

+0

这是一个长长的名单为不同的目的.... 将u plz告诉我唯一的文本,我必须写在manifest.txt 使我的框架可见与标题确定.... – mogli 2009-06-06 22:08:55

+0

正如我所说,我只能建议建立类路径与'java -cp',而不是Manifest。 – 2009-06-06 22:18:02