我把编好的java程序打包成.jar文件后,执行.jar文件出错
  我用的是MySQL数据库,在打包之前程序可以正常运行,但是在运行.jar文件时,出现下面的错误:  java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        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)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at onlyfun.caterpillar.SimpleDBSource.<init>(SimpleDBSource.java:28)
        at onlyfun.caterpillar.SimpleDBSource.<init>(SimpleDBSource.java:18)
        at onlyfun.caterpillar.ConnectionDemo.main(ConnectionDemo.java:18)  请教各位高手,应该如何修改,先谢谢了~

解决方案 »

  1.   

    mysql 的jar 没有打到你的jar中
      

  2.   

    是不是把那个包含com的文件夹打包放在我的jar文件中就可以了呢?
      

  3.   


    不是这样的。你 jar 能运行的话,那也就说明你会设置 MANIFEST.MF 文件了。你在 MANIFEST.MF 文件后面加上:Class-Path: lib/mysql-xxxx.jar将类打包生成一个 jar 文件,在这个 jar 文件的同级目录下建一个 lib 文件夹,将 mysql-xxxx.jar 文件拷贝进去就可以了。也就是说 jar 所使用到的第三方类库,只能采这种方式进行加载,如果有多个的话,当中使用空格分隔。lib 表示相对于当前
    所运行 jar 的路径,如果不写的话,表示第三方类库与运行的 jar 文件放在同一个目录下。
      

  4.   

    可以这样。你把数据库的驱动包用压缩文件管理器打开,看到那里边的文件夹除了meta-inf以外全部添加到你的jar包里边去。这是最简单的方法。另外3楼的那个方法也可以。只是方法有点麻烦
    你还可以直接使用fat jar这个eclipse插件,可以直接把第三方jar里的包全部自动添加到你所打的jar包里边去
      

  5.   

      不知道是不是我理解错了,我按照这样做了,结果还是跟刚才的一样:(
     
      我用的是mysql-connector-java-3.1.11a-bin.jar 这个
      manifest文件中加入了Class-Path: lib/mysql-connector-java-3.1.11a-bin.jar 
      文件的结构是这样的
      E:\my project\jar中包括bin文件夹和classes文件夹
      bin文件夹放的是生成的.jar文件
      classes文件夹放的是所有需要的.classes文件
      
      E:\my project\lib中包括了mysql-connector-java-3.1.11a-bin.jar  是不是还是弄错了啊?
      

  6.   


    是说要把com文件夹和.class文件放在一起,然后打包生成.jar吗?