Commons launcher

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文件

代码如下:
Java代码 复制代码 收藏代码
  1. <!--项目名-->
  2. <projectname="DemoLauncher"default="demo"basedir=".">
  3. <propertyname="base.dir"value="${basedir}/.."/>
  4. <!—加载的class路径-->
  5. <propertyname="etc.dir"value="${base.dir}/etc"/>
  6. <!--加载的jar路径-->
  7. <propertyname="lib.dir"value="${base.dir}/lib"/>
  8. <!--日志存放路径-->
  9. <propertyname="log.dir"value="${base.dir}/log"/>
  10. <pathid="base.class.path">
  11. <pathelementpath="${etc.dir}"/>
  12. <filesetdir="${lib.dir}"includes="*.jar"/>
  13. </path>
  14. <!--一个target指定一个带main方法的类,假如需要多个main,可以通过定义多个target,targetname必须与你定义的.bat或者.sh中的target的名字一致-->
  15. <targetname="demo">
  16. <mkdirdir="${log.dir}"/>
  17. <!--带有mian的执行类-->
  18. <launchclassname="org.apache.launcher.example.Main">
  19. <classpathrefid="base.class.path"/>
  20. <syspropertyset>
  21. <syspropertykey="log.dir"file="${log.dir}"/>
  22. </syspropertyset>
  23. </launch>
  24. </target>
  25. </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下开发调试的代码如下:
Java代码 复制代码 收藏代码
  1. <projectname="DemoLauncher"default="demo"basedir=".">
  2. <propertyname="base.dir"value="${basedir}/.."/>
  3. <!—在linux下,更改成相应的路径-->
  4. <propertyname="etc.dir"value="d:/ProgramFiles/ApacheSoftwareFoundation/Tomcat5.5/webapps/cms99/WEB-INF/classes"/>
  5. <!—在linux下,更改成相应的路径-->
  6. <propertyname="lib.dir"value="d:/ProgramFiles/ApacheSoftwareFoundation/Tomcat5.5/webapps/cms99/WEB-INF/lib"/>
  7. <propertyname="log.dir"value="${base.dir}/log"/>
  8. <pathid="base.class.path">
  9. <pathelementpath="${etc.dir}"/>
  10. <filesetdir="${lib.dir}"includes="*.jar"/>
  11. </path>
  12. <!—全文索引-->
  13. <targetname="full">
  14. <mkdirdir="${log.dir}"/>
  15. <launchclassname="com.foresee.cms.search.MakeIndex">
  16. <classpathrefid="base.class.path"/>
  17. <syspropertyset>
  18. <syspropertykey="log.dir"file="${log.dir}"/>
  19. </syspropertyset>
  20. <!—参数值,main函数的args[]参数的值,0为全文索引,1为增量-->
  21. <argvalue="0"/>
  22. </launch>
  23. </target>
  24. <!—增量索引-->
  25. <targetname="inc">
  26. <mkdirdir="${log.dir}"/>
  27. <launchclassname="com.foresee.cms.search.MakeIndex">
  28. <classpathrefid="base.class.path"/>
  29. <syspropertyset>
  30. <syspropertykey="log.dir"file="${log.dir}"/>
  31. </syspropertyset>
  32. <argvalue="1"/>
  33. </launch>
  34. </target>
  35. </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

注意:代码中的中文注释只是为了方便理解,可能会引起运行错误,请去掉.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值