说明
java开发完成后,打成jar包,并运行jar,有时还需要依赖其他jar包,那么问题来了,如何用java命令加载这些jar包,并运行指定的类呢?有下面几种方式
java启动命令
控制台程序
对于控制台程序,使用 java 启动
窗口程序
对于窗口程序,使用 javaw 启动
启动jar
方式一
1.打包jar时,指定 MANIFEST.MF 文件,并指定 Main-Class ,如下:
Manifest-Version: 1.0
Main-Class: Main
2.编写 启动.bat 文件,该 .bat 文件与jar文件同级目录
,内容如下:
start java -jar jar包名
start 解释
在命令窗口中,不显示上面的启动命令
例子
start java -jar rain.jar
方式二
1.只需要打包jar,不需要指定 Main-Class
2.编写 启动.bat 文件,该 .bat 文件与jar文件同级目录
,内容如下:
start java -classpath jar包名 类名
例子
start java -classpath rain.jar Main
加载依赖,并启动jar
复杂的项目中,依赖很多第三方jar,此时将项目导出jar后,要运行该jar时,还需要加载依赖的第三方jar
方式一(推荐)
1.创建 lib 文件夹,将所有的 jar文件放入到该 lib文件夹中
2.编写 启动.bat 文件,该 .bat 文件与 lib 文件夹同级目录,内容如下(加载当前目录下的jar,并运行指定类):
start java -classpath "lib/*" com.net.server.Main
或者
start java -cp "lib/*" com.net.server.Main
注意: "lib/*" 不能写成"lib/*.jar"
如果是当前目录:
java -classpath "./*" top.malaoshi.Main
方式二(不推荐)
1.编写 启动.bat 文件,该 .bat 文件与jar文件同级目录
,内容如下(加载当前目录下的jar,并运行指定类):
start java -classpath "./*" com.net.server.Main
或者
java -cp "./*" com.net.server.Main
注意: "./*" 不能写成"./*.jar"
将jar放入到jre的 ext 目录
不需要指定jar、依赖等,直接执行下面命令,会自动加载:
java top.malaoshi.Main
坑(不要使用)
java -Djava.ext.dirs=".\lib" pic_get.Test
但是会有巨大bug:
参数-Djava.ext.dirs会覆盖默认的ext值,ext的默认值是JRE/LIB/EXT,
java自带的加密算法的jar包就在这个目录中,也就是说覆盖默认的ext值后,凡是用到java自带加密算法的代码都会报错