LauncherBootstrap

    xiaoxiao2021-03-25  309

    Launcher 组件是一个与平台无关的Java 应用载入器。 Commons-launcher 消除了需要批处理或者Shell脚本来载入Java 类。  假如你需要在linux/windows上运行一个带有main方法的类,而该类又引用了许多jar和class文件,可以用Launcher。 

    Introduction

    The Commons-launcher project provides a smart way to start a Java application. In the facts, the CommonsLauncher provides a bootstrap class which starts a ant process.

    This ant process :

    makes the needed pre execution tasks : create the needed classpath, check resources, download resources ..invoke a launcher task which allows to start a java application

    Example

    We want to start a small Main class :

    package org.apache.launcher.example; import org.apache.commons.logging.LogFactory; public class Main {     public static void main(String[] args) {         LogFactory.getLog(Main.class).info("start");     } } We will name it "our application".

    Global distribution

    This runtime distribution includes:

    bin/demo.sh : the unix user script to start our small Main classbin/demo.bat : the windows user script to start our small Main classbin/ : contains the other files used by the scriptetc/ : contains the configuration file (log4j configuration, ..)lib/launcher-demo.jar : contains the small Main classlib/ : contains the needed jar files to the applicationlib/launcher/ : contains the needed jar files to the commons launcher

    Bin Directory

    User script

    The demo.(sh/bat) is the bootstrap script used by the user to start the application:

     java -cp . LauncherBootstrap -executablename launcher-demo demo

    Launcher ant configuration

    Our launcher.xml is as simple as possible :

    <project name="Demo Launcher" default="demo" basedir=".">     <property name="base.dir" value="${basedir}/.."/>     <property name="etc.dir" value="${base.dir}/etc"/>     <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 name="demo">         <mkdir dir="${log.dir}" />         <launch classname="org.apache.launcher.example.Main">             <classpath refid="base.class.path"/>             <syspropertyset>                 <sysproperty key="log.dir" file="${log.dir}"/>             </syspropertyset>         </launch>     </target> </project> It creates the needed classpath, the log directory, sets the log.dir system property for log4j and executes our Main class.

    Other files

    LauncherBootstrap.class, commons-launcher.jar : the neede classes the CommonsLauncherlauncher.properties : the bootstrap configuration (used to find the lib/launcher files)
    转载请注明原文地址: https://ju.6miu.com/read-18673.html

    最新回复(0)