bat执行java程序的脚本解析
使用java执行带Package的class文件
java package1.package2.className
或java -cp . package1.package2.className
-cp将当前路径设置到classpath,windows默认情况下会搜索当前目录,有的机器有时候需要设置下-cp .,否则会找不到class
bat:
运行Java程序,脚本中的主要操作是设置classpath.
脚本的功能:
(1)设置path:可以找到java命令
(2)设置splash(启动画面)
(3)设置classpath:主程序运行时找到引用的class
(4)设置远程调试需要的相关参数
@echo off
if "%OS%"=="Windows_NT" @setlocal
if "%OS%"=="WINNT" @setlocal
@title RRU Hotload Patch tool
set workpath=%~dp0
set path=%path%;%workpath%\lib
set JAVA_HOME=%workpath%\jdk-windows
rem set JAVA_OPTS=%JAVA_OPTS% -splash:%workpath%\img\welcome.gif
set JAVA_OPTS=%JAVA_OPTS% -classpath %workpath%\lib\*;
rem set JAVA_OPTS=-classic -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=3999,server=y,suspend=n %JAVA_OPTS% %JAVA_HOME%\bin\java %JAVA_OPTS% PackageName.ClassName
Analyze:
1.@echo off
(1). 作为控制批处理命令在执行时是否显示命令行自身的开关
格式:ECHO [ON|OFF]
(2). 关闭DOS命令提示符
在DOS提示符状态下键入ECHO OFF,能够关闭DOS提示符的显示使屏幕只留下光标,直至键入ECHO ON,提示符才会重新出现.
http://network.51cto.com/art/201009/225457.htm
@的用法参见:http://www.cnblogs.com/softidea/p/4229829.html
2.%OS%是个系统变量
3.setlocal
setlocal /?
开始批处理文件中环境改动的本地化操作。在执行 SETLOCAL 之后
所做的环境改动只限于批处理文件。要还原原先的设置,必须执
行 ENDLOCAL。达到批处理文件结尾时,对于该批处理文件的每个
尚未执行的 SETLOCAL 命令,都会有一个隐含的 ENDLOCAL 被执行。
eg:
@echo off
set test=test
echo %test%
setlocal
echo after setlocal
echo %test%
set test=newContent
echo %test%
endlocal
echo after endlocal
echo %test%
Output:
test
after setlocal
test
newContent
after endlocal
test
http://www.jb51.net/article/36043.htm
扩展:
启用变更延迟:
setlocal enabledelayedexpansion
【! !】
① 当启用变量延迟时,使用!!将变量名扩起来表示对变量值的引用。
http://baike.baidu.com/link?url=0MuBPmzZrQCNDu_-RlU4OQ4ZEfe0oIo3FcbdO-B636_38usvDXgUnjWcXYdyA2BH74453cVL6DdNxTLkSYe67K
eg:
@echo off
set a=4
set a=5&echo %a%
echo ==========================
setlocal enabledelayedexpansion
set a=4
set a=5&echo !a!
echo %a%
pause
Output:
4
==========================
5
5
请按任意键继续. . .
http://www.jb51.net/article/29323.htm
4、title
title /?
设置命令提示窗口的窗口标题。 TITLE [string] string 指定命令提示窗口的标题。
5、%~dp0
http://www.cnblogs.com/softidea/p/4229829.html
6、-splash
java -help
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file) -splash:<imagepath>
show splash screen with specified image
7、-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=3999,server=y,suspend=n
-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,address=3999,suspend=n -XDebug 启用调试。
-Xnoagent 禁用默认sun.tools.debug调试器。
-Djava.compiler=NONE 禁止 JIT 编译器的加载。
-Xrunjdwp 加载JDWP的JPDA参考执行实例。
transport 用于在调试程序和 VM 使用的进程之间通讯。
dt_socket 套接字传输。
dt_shmem 共享内存传输,仅限于 Windows。
server=y/n VM 是否需要作为调试服务器执行。
address=3999 调试服务器的端口号,客户端用来连接服务器的端口号。
suspend=y/n 是否在调试客户端建立连接之后启动 VM 。
http://www.blogjava.net/yongbing/articles/221179.html
Extension part:
linux:
echo "Add the XXX's Lib path into the CLASSPATH..."
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
oldClsPath=$CLASSPATH
LIPPATH=/opt/system/jakarta-tomcat-5.0./webapps/JavaService/WEB-INF/lib/*.jar
#echo $LIPPATH
cf=.
for i in $LIPPATH
do
cf=$cf:"$i"
#echo $cf
done
echo "The XXX's Lib path have been added into the CLASSPATH..."
#echo $cf
export CLASSPATH=$CLASSPATH:$cf
echo $CLASSPATH
#ps: if you want to run a java application, you must be copy this .bat file to the class directory.
java -cp CLASSPATH PackageName.ClassName
#ok
windows:
@echo off
if "%OS%"=="Windows_NT" @setlocal
if "%OS%"=="WINNT" @setlocal
rem 启用变量延迟时:
setlocal ENABLEDELAYEDEXPANSION
ECHO. ECHO "Set CLASSPATH begin..." set CP=.
rem 当启用变量延迟时,使用!!将变量名扩起来表示对变量值的引用
for %%k in ("D:/Program Files/apache-tomcat-6.0.16/webapps/axis/WEB-INF"/lib/*.jar) do set CP=!CP!;%%k
set CLASSPATH=%CLASSPATH%;%CP%
ECHO "Set CLASSPATH is ok..."
ECHO "Show the CLASSPATH: "
ECHO.
ECHO %CLASSPATH%
ECHO.
rem "you can add some code here."
rem ps: if you want to run a java application, you must be copy this .bat file to the class directory.
rem java -cp CLASSPATH PackageName.ClassName
rem ""
rem ""
PAUSE
http://blog.csdn.net/faye0412/article/details/2986516
bat执行java程序的脚本解析的更多相关文章
- crontab中执行java程序的脚本
测试场景说明(操作系统:centos7): 有一个bash脚本,脚本内容是执行某个java程序,该脚本为 /data/project1/start.sh crontab -e,添加了以下任务: * * ...
- bat执行java程序 good
start.bat set MY_HOME=%~dp0 set JMS_BINDING_PATH=%MY_HOME%..\binds set JAVA_HOME=C:\Program Files\J ...
- sh脚本执行Java程序
1.不引用Jar包或者资源文件夹 最简单的程序Hello World. 首先创建Hello.java public class Hello { public static void main(Stri ...
- windows计划任务启动bat执行java文件
系统:win7 环境:需要配置好jdk的环境变量 需求:每次开机,用bat批处理执行将一个位于D:\workspace\console目录底下的console.txt重命名的java文件 拿到需求,我 ...
- CentOS下crontab执行java程序
阿里云CentOS收不到邮件 在crontab里配置执行脚本,脚本用来执行java程序,死活不执行.单独执行脚本可以运行. 查看crontab的日志文件,/var/log/cron,发现没有收到cro ...
- 不错的linux下通用的java程序启动脚本
不错的linux下通用的java程序启动脚本(转载) 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的 ...
- Linux中crontab无法执行java程序的问题
Linux中crontab无法执行java程序的问题 jdk环境变量配置问题:可以用全路径来解决: 竟然是kill -9之后,后面的脚本都不运行,这个还没有找到原因啊: 即便是系统级别的 ls 命令, ...
- 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序
如何用javac 和java 编译运行整个Java工程 (转载) http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...
- JVM执行Java程序时内存的划分
Java虚拟机在执行Java程序过程中会把它所管理的内存区域划分为若干个不同的数据区域. Java虚拟机所管理的内存包括以下几个运行时区域: 1.程序计数器(Program Couter Regist ...
随机推荐
- android学习--视图列表(ListView和ListActivity)
说明: 视图列表(ListView和ListActivity)与AutoComplete.Spinner类似,它们都须要一个供显示的列表项,能够须要借助于内容Adapter提供显示列表项 创建List ...
- RadioButton控件
前台代码: <div> <asp:RadioButton ID="RadioButton1" runat="server" GroupName ...
- android之wifi开发
WIFI就是一种无线联网技术,常见的是使用无线路由器.那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网.如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为“热点 ...
- Robot Framework与Web界面自动化测试学习笔记:利用xpath定位元素
在rf中,利用selinum2的关键字进行用例编写时,很多关键字的参数是html元素的定位标识. 最简单的方式,是通过id 或name来描述元素定位信息,如 click button id=l ...
- JVM调优总结(十)-调优方法
JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪.详细说明参考这里 ...
- 基于visual Studio2013解决C语言竞赛题之0802图书信息查询
题目 解决代码及点评 /* 功能:有一批图书,每本书有:书名(name),作者(author) , 编号(num),出版日期(date)四个数据, 希望输入后按书名的字母顺序将各书的记录排列好, ...
- VS2008查看dll导出函数
打开Visual Studio 2008 命令提示,使用命令 [plain] view plaincopyprint? dumpbin /exports simple.dll 即可查看
- c++怎样让返回对象的函数不调用拷贝构造函数
我们知道拷贝构造函数有两种“默默”的方式被调用 1. 想函数传入 值参数 2. 函数返回 值类型 今天我们讨论函数返回值类型的情况. 得到结论是 1. 当对象有拷贝构造函数(系统为我们生成.或者我们自 ...
- 【剑指offer】字符串转整数
转载请注明出处:http://blog.csdn.net/ns_code/article/details/28015693 题目描写叙述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函 ...
- C++如何屏蔽双击运行程序功能?
问题描述: 我们开发过程中可能会经常遇到,需要屏蔽EXE的双击运行功能,只能通过宿主程序(Service或EXE)来启动.比如腾讯的迷你弹窗,就只能通过主程序来启动,而不能直接通过双击来运行. 实现原 ...