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文件
代码如下:
<!--项目名-->
<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下开发调试的代码如下:
<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
注意:代码中的中文注释只是为了方便理解,可能会引起运行错误,请去掉.