通过批处理来启动java jar程序
2016-03-08 15:33
316 查看
我们很多功能都可能需要做成一个程序来启动,启动方式无非就是在命令行敲上:java -jar xxx.jar [参数1,参数2] 。这样虽然比较简单,但是还是有些不方便的地方。
接下来跟大家讲讲怎么样通过写批出来脚本来实习jar程序的启动。
首先,我们需要自己的jar包及它的依赖jar包,假如放在lib目录下,配置文件conf.properties在conf目录下,然后我们的启动脚本放在bin目录下。
接下来就是编写我们的脚本,假设这个脚本取名叫 start.bat :
这样通过简单的一些判断来实现对环境的检测,如果环境满足,则继续运行。
我们的jar包使用到了log4j的配置,参数传递的方式是通过 -D,java内部获取这个参数可以通过System.getProperty("config.path") 来获取,如果不是通过 -D的方式,直接传入,像这样:-config.path=xxx ,则在代码里面获取的方式是 通过main方法的args数组参数来获取。
接着就是我们的主类了 com.mysite.kafka.KafkaConsumer 。这里需要注意的是,-D传参数应该放到主类前面,直接传则放到主类后面。
这一段代码是让脚本能后台运行,如果你只需要前台运行的话,则可注释掉第三句。使用 rem 注释,像这样:
然后我们双击这个脚本即可启动程序,如果我们的软件包换了目录,完全不需要修改,而且这个脚本只需要稍微的修改一下即可用到别的地方,是不是很方便。
其实我们掌握了规律,知道一个jar程序启动需要哪些东西,也可以很快的把shell脚本写出来。
例如:
这里使用nohup来启动,可以让jar程序在后台启动,如果需要前台只需要简单的修改一下启动命令即可,就像这样:
这里的-cp 指的是-classpath 你也可以写全名,来指定jar包、依赖jar包的路径,使它们能够加载到JVM去运行。
好了就讲到这里。
co
接下来跟大家讲讲怎么样通过写批出来脚本来实习jar程序的启动。
首先,我们需要自己的jar包及它的依赖jar包,假如放在lib目录下,配置文件conf.properties在conf目录下,然后我们的启动脚本放在bin目录下。
接下来就是编写我们的脚本,假设这个脚本取名叫 start.bat :
@echo off set BASE_HOME=%cd%\.. set JAVA="Z:\base\tools\JDK\jdk7_71\bin\java.exe" set JAVA_OPTS=-Xmx512m set CONF="%BASE_HOME%\conf\conf.properties" if not exist "%BASE_HOME%\lib\Application*.jar" ( @echo "配置的Application路径不正确" @pause exit ) if not exist %JAVA% ( @echo "没有找到JDK,请安装JDK1.6-64位" @pause exit ) if not exist %CONF% ( @echo "没有找到conf.properties" @pause exit ) @echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit :begin %JAVA% %JAVA_OPTS% -Dlog4j.configuration=file:///%BASE_HOME%/conf/log4j.properties -cp "%BASE_HOME%\lib\*" -Dconfig.path=%CONF% com.mysite.kafka.KafkaConsumer
这样通过简单的一些判断来实现对环境的检测,如果环境满足,则继续运行。
我们的jar包使用到了log4j的配置,参数传递的方式是通过 -D,java内部获取这个参数可以通过System.getProperty("config.path") 来获取,如果不是通过 -D的方式,直接传入,像这样:-config.path=xxx ,则在代码里面获取的方式是 通过main方法的args数组参数来获取。
接着就是我们的主类了 com.mysite.kafka.KafkaConsumer 。这里需要注意的是,-D传参数应该放到主类前面,直接传则放到主类后面。
@echo off if "%1" == "h" goto begin rem mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit :begin
这一段代码是让脚本能后台运行,如果你只需要前台运行的话,则可注释掉第三句。使用 rem 注释,像这样:
rem mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
然后我们双击这个脚本即可启动程序,如果我们的软件包换了目录,完全不需要修改,而且这个脚本只需要稍微的修改一下即可用到别的地方,是不是很方便。
其实我们掌握了规律,知道一个jar程序启动需要哪些东西,也可以很快的把shell脚本写出来。
例如:
n 4000 ohup /home/jst/jdk1.7.0_71/bin/java -Xmx512m -Dlog4j.configuration=file:/home/Application/conf/log4j.properties -Dconfig.path=../conf/conf.properties -cp "../lib/*" com.mysite.kafka.KafkaConsumer > /dev/null 2>&1 &
这里使用nohup来启动,可以让jar程序在后台启动,如果需要前台只需要简单的修改一下启动命令即可,就像这样:
/home/jst/jdk1.7.0_71/bin/java -Xmx512m -Dlog4j.configuration=file:/home/Application/conf/log4j.properties -Dconfig.path=../conf/conf.properties -cp "../lib/*" com.mysite.kafka.KafkaConsumer
这里的-cp 指的是-classpath 你也可以写全名,来指定jar包、依赖jar包的路径,使它们能够加载到JVM去运行。
好了就讲到这里。
co
相关文章推荐
- java ScheduledExecutorService 使用
- Java中整型的缓存机制
- 记录-java(jxl) Excel导入数据库
- 浅谈 java 字符串
- JDK的配置环境
- jvm(1)-走进java
- JAVA实现把指定文件夹下的所有文件压缩成zip包
- Java多线程编程
- Eclipse 更新版本,解决android xml加载过慢和容易崩溃的问题
- eclipse设置
- Myeclipse 的中文乱码解决办法
- JMM——java内存模型
- Maven java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListene
- Java IO流
- Java集合类详解 set、list、map、
- leetcode 120.Triangle | Java最短代码实现
- Java:按值传递还是按引用传递详细解说
- 利用java自带的base64实现加密、解密
- 图的理解:深度优先和广度优先遍历及其 Java 实现
- java第六天