我把编好的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) 请教各位高手,应该如何修改,先谢谢了~
我用的是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) 请教各位高手,应该如何修改,先谢谢了~
不是这样的。你 jar 能运行的话,那也就说明你会设置 MANIFEST.MF 文件了。你在 MANIFEST.MF 文件后面加上:Class-Path: lib/mysql-xxxx.jar将类打包生成一个 jar 文件,在这个 jar 文件的同级目录下建一个 lib 文件夹,将 mysql-xxxx.jar 文件拷贝进去就可以了。也就是说 jar 所使用到的第三方类库,只能采这种方式进行加载,如果有多个的话,当中使用空格分隔。lib 表示相对于当前
所运行 jar 的路径,如果不写的话,表示第三方类库与运行的 jar 文件放在同一个目录下。
你还可以直接使用fat jar这个eclipse插件,可以直接把第三方jar里的包全部自动添加到你所打的jar包里边去
我用的是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 是不是还是弄错了啊?
是说要把com文件夹和.class文件放在一起,然后打包生成.jar吗?