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 ...
随机推荐
- 使用 stvd 编译STM8S 时能看到使用RAM ROM大小的方法
刚刚安装的STVD编译器,编译时候不显示用了多少RAM和ROM?对于此问题.有两个方法:一是看.map文件 还有一种是 添加一个补丁,详细操作例如以下,能够在我的资源里下载对应的文件. http:// ...
- Log4j 2.0在开发中的高级使用具体解释—配置简单的控制台输出(三)
Log4j 2.0在近期迎来了重大的版本号升级.攻克了1.x中死锁bug之外,性能也有10倍的提升. 相同的在最新版本号中的新特性中. 配置文件也不只局限于xml和java特性文件properties ...
- VTK中国文字显示和简单的医疗图像浏览软件
使用VTK做一个简单的医学图像浏览软件(在http://blog.csdn.net/www_doling_net/article/details/8668870这篇博文的基础上改的),支持标准的医学图 ...
- VMware Workstation下VMnet1等虚拟网卡与主机网卡之间的关系
VMware Workstation下VMnet1等虚拟网卡与主机网卡之间的关系 本文出自 "王春海的博客" http://wangchunhai.blog.51cto.com/2 ...
- C++的运算符
C++的运算符十分丰富,使得C++的运算十分灵活方便.例如把赋值号(=)也作为运算符处理,这样,a=b=c=4就是合法的表达式,这是与其他语言不同的.C++提供了以下运算符: 算术运算符+(加) - ...
- 【转】增强 scite 编辑器的代码提示功能
在 windows 下写 Lua, 我能找到的最好的编辑器就是 luaForWindows 项目里带的 scite. npp (即 notepad++ ) 也将就着能用, 不过只有代码高亮和简单的单词 ...
- Android下调用收发短信邮件等
Android下调用收发短信邮件等 1,调web浏览器Uri myBlogUri = Uri.parse("http://xxxxx.com");returnIt = new In ...
- Android 锁屏状态/锁屏密码等相关
Android 锁屏状态/锁屏密码等相关 开始是在设备管理器方面找方法,但一直不行,可能在公司系统组同事的帮助下,知道KeyguardManager这个类 /** * 当前系统锁屏是否有密码 * @p ...
- codeforces 487E Tourists
如果不是uoj上有的话(听说这是China Round),我有可能就错过这道题目了(这是我有史以来为oi写的最长的代码,用了我一天TAT!). 题目 传送门. 一个连通无向图,点上有权,支持两种操作: ...
- Android Socket 开发技术
根据之前的经验,应用软件的网络通信无非就是Socket和HTTP,其中Socket又可以用TCP和UDP,HTTP的话就衍生出很多方式,基础的HTTP GET和POST请求,然后就是WebServic ...