导出jar有两种,一种是普通的可以作为依赖包使用的jar,不需要选择main class,就像通常使用的log4j.jar一样,另一种是可执行jar,带有main方法的入口类。
win7下导出j2se成jar可执行包后(上面所说第二种情况),不需要依赖包时比较简单,若需要依赖包,可以用压缩工具打开jar,然后直接编辑MANIFEST.MF文件,加入class-pash: sameple1.jar sameple2.jar 等,每行最长72个字符,超过需要回车换行。
加入依赖包后,spring加载hibernate的.hbm文件时可能会出现无法找到文件的错误,定位异常,可以如下更改下.hbm文件定位方式由:
<property name="mappingDirectoryLocations">
<list>
<value>classpath:/com/pay/po/</value>
<value>classpath:/com/pay/settle/pojo/</value>
</list>
</property>
改为:
<property name="mappingLocations">
<list>
<value>classpath*:/com/pay/po/*.hbm.xml</value>
<value>classpath*:/com/pay/settle/pojo/*.hbm.xml</value>
</list>
</property>
改后,spring就可以正确加载.hbm文件了
紧接着双击jar文件后,没有响应或打开了压缩工具,则需要两项工作,第一项,更改打开方式为javaw.exe,第二种在win7下需要修改一项注册表内容,修改方式如下;
进入HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\command,
修改默认的键值为 "C:\Program Files\Java\jre1.6.0\bin\javaw.exe" -jar "%1"
注意如果 "C:\Program Files\Java\jre\bin\javaw.exe" -jar "%1" 。无效的话,就再最后加上 %* ==> "C:\Program Files\Java\jre1.6.0\bin\javaw.exe" -jar "%1" %*
顺便提下,删除没用的打开方式的方法:在HKEY_CLASSES_ROOT\Applications\中找到该程序文件的项就可以了。
这两种方式都比较麻烦,其实可以直接通过java -jar test.jar方式来运行jar可执行包.
运行中可能出现版本异常,通过java -version看下当前java版本,一般这种情况是当前java版本低于jar包中生成的.class的jdk的版本,可以通过环境变量java_home,path来更换下jdk。
更换后注销电脑,再次用java -version看下版本,若还是之前的版本,则可能是在system32下有老版本的javaw.exe javac.exe等jdk的东西。
因为classpath搜索时,是优先搜索system32下的东西,这种情况可以在环境变量path最前面加入%java_home%/bin;让其第一个搜索的是我们指定的jdk。
再次注销下电脑,应该可以了,path中也应该有java_home指定的路径。
都成功后,运行java -jar test.jar若无异常信息,则表示成功启动jar包。