最近在看tomcat源码,哎,好纠结亚,看的头晕呼呼的。才刚看到启动这一块,Bootstrap.jar中有这一段代码
   public static void main (String[] args){
     .......................
       String command = "start";
      if (args.length > 0) {
        command = args[(args.length - 1)];
      }      if (command.equals("startd")) {
        args[0] = "start";
        daemon.load(args);
        daemon.start();
      } else if (command.equals("stopd")) {
        args[0] = "stop";
        daemon.stop();
      } else if (command.equals("start")) {
        daemon.setAwait(true);
        daemon.load(args);
        daemon.start();
      } else if (command.equals("stop")) {
        daemon.stopServer(args);
      } else {
        log.warn("Bootstrap: command \"" + command + "\" does not exist.");
      }
    .....................
}
args是main函数的参数,平时很少用,但在这里看到,有点摸不着头脑,请大侠指点迷津??

解决方案 »

  1.   

    我擦 看源码了 牛逼!就是参数么 类似tomcat启动的时候 tomcat start参数就是start
      

  2.   

    看源码了??确实牛叉。这个main函数主要是判断你启动命名时的参数,根据参数判断相应处理。
      

  3.   

    比如 通过命令行启动程序,后面添加的参数,会被截取为args数组
      

  4.   

      哎,不要这样说,俺还是个新手,过年准备跳槽,公司不让走,闲着没事就看看呗!tomcat启动不是通过    startup.bat启动的吗?貌似startup.bat调用了catalina.bat,这些是批处理文件,看了半天好纠结亚!
      

  5.   

     4楼的 比如 通过命令行启动程序,后面添加的参数,会被截取为args数组  能不能再详细点亚
      

  6.   

    使用编好的class档时
    java classname string1 string2 string3
    则会传参给这个class处理
    那args就会有string1 string2 string3 这三个
      

  7.   

    使用编好的class档时????
      

  8.   

    比如
    java Hello a b c
    那么main函数里的参数就是{"a","b","c"}了
    在bat里 参数用空格分割的
      

  9.   

    就是调用时传递的参数,如在你的main方法里启动tomcat 
    org.apache.catalina.startup.Catalina.main(new String[]{"-config", "D:/workspace/Tomcat/conf/server.xml","-debug", "start"});
    红色部分就是不不明白的,
    你应该是不明白为什么还要判断args的长度是吧,平时操作main方法都是独立启动的,没有别人调用它,所以你不太清楚。