Launcher 组件是一个与平台无关的Java 应用载入器。 Commons-launcher 消除了需要批处理或者Shell脚本来载入Java 类。
假如你需要在linux/windows上运行一个带有main方法的类,而该类又引用了许多jar和class文件,可以用Launcher。
Apache提供了一个Lanucher的应用例子,我们可以通过修改该demo来实现。
实现的步骤:
1、下载commons-launcher-example
http://commons.apache.org/downloads/download_launcher.cgi
2、解压下载的文件,然后修改该解压包里面bin文件夹中的launcher.xml文件
代码如下:
3、修改demo.bat和demo.sh文件
java -cp . LauncherBootstrap -executablename launcher-demo demo
注意这句话中最后一个单词demo必须与你在target的名称一致。
应用commons-launcher的开发例子
为公司的系统网站开发一个全文索引功能,为了可以随时在linux进行全文索引创建和增量索引,也是通过修改commons-launcher-example来实现的。在windows下开发调试的代码如下:
修改demo.sh和demo.dat文件
java -cp . LauncherBootstrap -executablename launcher-demo full
创建一个增量索引生成的执行文件inc.sh和inc.bat
java -cp . LauncherBootstrap -executablename launcher-inc inc
注意:代码中的中文注释只是为了方便理解,可能会引起运行错误,请去掉.
假如你需要在linux/windows上运行一个带有main方法的类,而该类又引用了许多jar和class文件,可以用Launcher。
Apache提供了一个Lanucher的应用例子,我们可以通过修改该demo来实现。
实现的步骤:
1、下载commons-launcher-example
http://commons.apache.org/downloads/download_launcher.cgi
2、解压下载的文件,然后修改该解压包里面bin文件夹中的launcher.xml文件
代码如下:
- <!--项目名-->
- <projectname="DemoLauncher"default="demo"basedir=".">
- <propertyname="base.dir"value="${basedir}/.."/>
- <!—加载的class路径-->
- <propertyname="etc.dir"value="${base.dir}/etc"/>
- <!--加载的jar路径-->
- <propertyname="lib.dir"value="${base.dir}/lib"/>
- <!--日志存放路径-->
- <propertyname="log.dir"value="${base.dir}/log"/>
- <pathid="base.class.path">
- <pathelementpath="${etc.dir}"/>
- <filesetdir="${lib.dir}"includes="*.jar"/>
- </path>
- <!--一个target指定一个带main方法的类,假如需要多个main,可以通过定义多个target,targetname必须与你定义的.bat或者.sh中的target的名字一致-->
- <targetname="demo">
- <mkdirdir="${log.dir}"/>
- <!--带有mian的执行类-->
- <launchclassname="org.apache.launcher.example.Main">
- <classpathrefid="base.class.path"/>
- <syspropertyset>
- <syspropertykey="log.dir"file="${log.dir}"/>
- </syspropertyset>
- </launch>
- </target>
- </project>
<!--项目名-->
<project name="Demo Launcher" default="demo" basedir=".">
<property name="base.dir" value="${basedir}/.."/>
<!—加载的class路径-->
<property name="etc.dir" value="${base.dir}/etc"/>
<!--加载的jar路径-->
<property name="lib.dir" value="${base.dir}/lib"/>
<!--日志存放路径-->
<property name="log.dir" value="${base.dir}/log"/>
<path id="base.class.path">
<pathelement path="${etc.dir}"/>
<fileset dir="${lib.dir}" includes="*.jar"/>
</path>
<!--一个target指定一个带main方法的类,假如需要多个main,可以通过定义多个target, target name 必须与你定义的.bat或者.sh中的 target的名字一致-->
<target name="demo">
<mkdir dir="${log.dir}" />
<!--带有mian的执行类-->
<launch classname="org.apache.launcher.example.Main">
<classpath refid="base.class.path"/>
<syspropertyset>
<sysproperty key="log.dir" file="${log.dir}"/>
</syspropertyset>
</launch>
</target>
</project>
3、修改demo.bat和demo.sh文件
java -cp . LauncherBootstrap -executablename launcher-demo demo
注意这句话中最后一个单词demo必须与你在target的名称一致。
应用commons-launcher的开发例子
为公司的系统网站开发一个全文索引功能,为了可以随时在linux进行全文索引创建和增量索引,也是通过修改commons-launcher-example来实现的。在windows下开发调试的代码如下:
- <projectname="DemoLauncher"default="demo"basedir=".">
- <propertyname="base.dir"value="${basedir}/.."/>
- <!—在linux下,更改成相应的路径-->
- <propertyname="etc.dir"value="d:/ProgramFiles/ApacheSoftwareFoundation/Tomcat5.5/webapps/cms99/WEB-INF/classes"/>
- <!—在linux下,更改成相应的路径-->
- <propertyname="lib.dir"value="d:/ProgramFiles/ApacheSoftwareFoundation/Tomcat5.5/webapps/cms99/WEB-INF/lib"/>
- <propertyname="log.dir"value="${base.dir}/log"/>
- <pathid="base.class.path">
- <pathelementpath="${etc.dir}"/>
- <filesetdir="${lib.dir}"includes="*.jar"/>
- </path>
- <!—全文索引-->
- <targetname="full">
- <mkdirdir="${log.dir}"/>
- <launchclassname="com.foresee.cms.search.MakeIndex">
- <classpathrefid="base.class.path"/>
- <syspropertyset>
- <syspropertykey="log.dir"file="${log.dir}"/>
- </syspropertyset>
- <!—参数值,main函数的args[]参数的值,0为全文索引,1为增量-->
- <argvalue="0"/>
- </launch>
- </target>
- <!—增量索引-->
- <targetname="inc">
- <mkdirdir="${log.dir}"/>
- <launchclassname="com.foresee.cms.search.MakeIndex">
- <classpathrefid="base.class.path"/>
- <syspropertyset>
- <syspropertykey="log.dir"file="${log.dir}"/>
- </syspropertyset>
- <argvalue="1"/>
- </launch>
- </target>
- </project>
<project name="Demo Launcher" default="demo" basedir=".">
<property name="base.dir" value="${basedir}/.."/>
<!—在linux下,更改成相应的路径 -->
<property name="etc.dir" value="d:/Program Files/Apache Software Foundation/Tomcat5.5/webapps/cms99/WEB-INF/classes"/>
<!—在linux下,更改成相应的路径 -->
<property name="lib.dir" value="d:/Program Files/Apache Software Foundation/Tomcat5.5/webapps/cms99/WEB-INF/lib"/>
<property name="log.dir" value="${base.dir}/log"/>
<path id="base.class.path">
<pathelement path="${etc.dir}"/>
<fileset dir="${lib.dir}" includes="*.jar"/>
</path>
<!—全文索引-->
<target name="full">
<mkdir dir="${log.dir}" />
<launch classname="com.foresee.cms.search.MakeIndex">
<classpath refid="base.class.path"/>
<syspropertyset>
<sysproperty key="log.dir" file="${log.dir}"/>
</syspropertyset>
<!—参数值,main函数的args[]参数的值,0为全文索引,1为增量 -->
<arg value="0"/>
</launch>
</target>
<!—增量索引-->
<target name="inc">
<mkdir dir="${log.dir}" />
<launch classname="com.foresee.cms.search.MakeIndex">
<classpath refid="base.class.path"/>
<syspropertyset>
<sysproperty key="log.dir" file="${log.dir}"/>
</syspropertyset>
<arg value="1"/>
</launch>
</target>
</project>
修改demo.sh和demo.dat文件
java -cp . LauncherBootstrap -executablename launcher-demo full
创建一个增量索引生成的执行文件inc.sh和inc.bat
java -cp . LauncherBootstrap -executablename launcher-inc inc
注意:代码中的中文注释只是为了方便理解,可能会引起运行错误,请去掉.
本文介绍如何利用Apache Commons Launcher组件简化Java应用程序在不同操作系统上的部署过程,并提供了一个具体的开发实例,展示如何通过配置文件定义不同的执行目标,以及如何在Windows和Linux环境下创建和增量更新全文索引。



3314

被折叠的 条评论
为什么被折叠?



