想了一会真的不知道该怎么表述文章的标题,好不容易想了个还算满意的,仔细一念感觉。。。。算了,天生就笨。这样吧
因为前两天,项目给测试测的时候,数据库部分出现了点问题(其实是乱码问题,本来很好解决的,想复杂了。。。。这里不跑题了)。想写个测试程序到测试的机器看看,代码倒是一下子就写完了,结果打JAR包的时候费了半天的时间,离上次手工打包的时候也不过3个月呀,看来果然是好记性赢不得三寸烂笔头呀。果断记下步骤:
我是用eclipse 导出Jar 包的,本来工作就比较累了,能偷懒就偷点懒吧。
这里我到出的JAR 包是这样的:mysqlsee.jar
解压看看目录结构:mysql是我自己建立的目录
mysql
-mysqlsee
-com
tang
META-INF
tang 下是我写的java字节码文件
这时候如果你在CMD 用调用 java -jar 是找不到sql的驱动的。上网搜了下说在 MANIFEST.MF文件中添加 Class-Path : mysqldriver.jar 就可以了。然后看到csdn上一篇文章上说,利用-jar 的话,jvm会忽视你设置的classpath。既然这样没有关系,jar包不就是class文件的集合嘛,解压驱动的jar包,出现这样的目录:
mysqldriver
-com
-mysql
-org
-gjt
META-INF
具体下面的目录就不详细列出了。
现在有了class 文件了,都去掉META-INF文件夹,因为一会能自己生成一个的,然后整合到一起吧,这样就相当与全部自己写的类文件了。整合到一起的目录是这样的:
mysqlsee
-com
-mysql
-jdbc
-tang
-org
-gjt
-mm
-mysql
如果目录结构不一样的话要马上改过来哦。
自己写一个清单文件吧,这里我取名是man.mf
Manifest-version: 1.0
Main-Class: com.tang.See
指定一下程序入口,也就是main 方法所在类。但是你别以为你有两个类有main方法就写两个了,不要尝试为难jvm,否则它会为难我们的。
打开 cmd cd到自己建立的mysql 的文件夹,不是解压驱动后N个CD之后的mysql文件夹,执行命令:
D:\mysql>jar cvfm test.jar man.mf -C mysqlsee . 注意后面的.(点)不能去掉,然后按回车吧。是不是生成了一个test.jar 了?好了,你成功了。java -jar test.jar 试试,没问题了吧,呵呵。告一段落,开始解BUG,下次再用ClassLoad 不用解压驱动的方式来写个吧。