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

代码如下:
<!--项目名-->
<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

注意:代码中的中文注释只是为了方便理解,可能会引起运行错误,请去掉.

你可能感兴趣的:(java,apache,linux,windows,脚本)