使用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程序的脚本解析的更多相关文章

  1. crontab中执行java程序的脚本

    测试场景说明(操作系统:centos7): 有一个bash脚本,脚本内容是执行某个java程序,该脚本为 /data/project1/start.sh crontab -e,添加了以下任务: * * ...

  2. bat执行java程序 good

    start.bat set MY_HOME=%~dp0  set JMS_BINDING_PATH=%MY_HOME%..\binds set JAVA_HOME=C:\Program Files\J ...

  3. sh脚本执行Java程序

    1.不引用Jar包或者资源文件夹 最简单的程序Hello World. 首先创建Hello.java public class Hello { public static void main(Stri ...

  4. windows计划任务启动bat执行java文件

    系统:win7 环境:需要配置好jdk的环境变量 需求:每次开机,用bat批处理执行将一个位于D:\workspace\console目录底下的console.txt重命名的java文件 拿到需求,我 ...

  5. CentOS下crontab执行java程序

    阿里云CentOS收不到邮件 在crontab里配置执行脚本,脚本用来执行java程序,死活不执行.单独执行脚本可以运行. 查看crontab的日志文件,/var/log/cron,发现没有收到cro ...

  6. 不错的linux下通用的java程序启动脚本

    不错的linux下通用的java程序启动脚本(转载) 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的 ...

  7. Linux中crontab无法执行java程序的问题

    Linux中crontab无法执行java程序的问题 jdk环境变量配置问题:可以用全路径来解决: 竟然是kill -9之后,后面的脚本都不运行,这个还没有找到原因啊: 即便是系统级别的 ls 命令, ...

  8. 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序

    如何用javac 和java 编译运行整个Java工程 (转载)  http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...

  9. JVM执行Java程序时内存的划分

    Java虚拟机在执行Java程序过程中会把它所管理的内存区域划分为若干个不同的数据区域. Java虚拟机所管理的内存包括以下几个运行时区域: 1.程序计数器(Program Couter Regist ...

随机推荐

  1. 非确定有限状态自动机的构建(二)——将CharVal转换为NFA

    保留版权,转载注明出处:潘军彪的个人博客(http://blog.csdn.net/panjunbiao/article/details/9378933) 将上下文无关文法读入内存之后,可以将它转换成 ...

  2. Linux下安装yum工具

    Linux下安装yum工具 http://blog.csdn.net/caoshichaocaoshichao/article/details/13171919

  3. python-Day4-迭代器-yield异步处理--装饰器--斐波那契--递归--二分算法--二维数组旋转90度--正则表达式

    本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...

  4. C# 使用IENUMERABLE,YIELD

    C# 使用IENUMERABLE,YIELD 前言 在上篇文章中我得出结论,遍历迭代器修改迭代器中项目的值未生效,是因为使用了yield return,并且每次遍历迭代器都执行返回迭代器的方法.这篇文 ...

  5. 总结:js中4类修改样式的方法

    前言 最近在写一个扩展右键菜单的插件,既然是插件,想着一步到位,把相关的style样式设置都丢进js文件中,直接加载一个js文件便可以使用该插件,所以今天就研究了下js批量的插入样式的方法,即addS ...

  6. Handler.removeMessages的作用,有时候为什么一定要先remove一下呢

    removeMessages会将handler对应message queue里的消息清空,如果带了int参数则是对应的消息清空.队列里面没有消息则handler会不工作,但不表示handler会停止. ...

  7. Away3D带你360°漫游全景影像

    1代码展示 package { import away3d.containers.View3D; import away3d.controllers.HoverController; import a ...

  8. Xcode6使用storyboard在TabBarController上建立三个以上Item

    在Xcode5上做以上的操作没有问题,这次是要在Xcode6上实现之,特记录以备用. 首先新建一个storyboard文件.取名Custom.storyboard.拖动菜单添加一个TabBarComt ...

  9. PHP - 图像处理

    第14章 处理图像 学习要点: 1.创建图像 2.简单小案例 在PHP5中,动态图象的处理要比以前容易得多.PHP5在php.ini文件中包含了GD扩展包,只需去掉GD扩展包的相应注释就可以正常使用了 ...

  10. boost ini

    #include <boost/property_tree/ptree.hpp>#include <boost/property_tree/ini_parser.hpp> .. ...