JAVA开发者招数之“万里之行始于足下”

来源:互联网 发布:sqlmap tamper mssql 编辑:程序博客网 时间:2024/06/10 08:31
JAVA开发者招数之“万里之行始于足下”  

生存运行批处理程序(UNIX版本或者WINDOWS版本)

package com;

import java.io.File;

/**
 * 功能:生成java批处理程序
 * 现状:很多“高手”都受jar包的困扰,认为写个批处理很容易,但是写出来的bat或者sh屡屡出错,今天老蒋我特花点时间写个类,解决这个问题。
 * 描述:根据操作系统类型生成批处理文件内容体
 * @author javy21
 *
 */
public class LibMainProcess {


 public static void main(String[] args) {
  LibMainProcess main = new LibMainProcess();
//  是否是WINDOWS操作系统 是windows环境则为true 否则为false
  boolean isWin = true;
//  jar包的实际存放目录
  String libSrcPath = "./lib";
//  实际报文体中的目录路径,可以与libSrcPath不同,要视部署具体路径而定
  String libDestPath = "./lib";
//  应用的主类(包含包路径)
  String strMainClass = "com.MainProcess";
//  生成批处理文件内容体
  String theRunStr = main.getRunStr(isWin, libSrcPath , libDestPath ,strMainClass );
  System.out.println("WINDOWS RUN.BAT:/n"+theRunStr);

//  UNIX的sh脚本
  isWin = false;
//  生成批处理文件内容体
  theRunStr = main.getRunStr(isWin, libSrcPath , libDestPath ,strMainClass );
  System.out.println("UNIX RUN.SH:/n"+theRunStr);

 }

 /**
  * 功能:生成java批处理程序
  * 描述:根据操作系统类型生成批处理文件内容体
  * @param isWin   Windows操作系统标识:true为WINDOWS否则为UNIX系列
  * @param libSrcPath jar包的实际存放目录
  * @param libDestPath 实际报文体中的目录路径,可以与libSrcPath不同,要视部署具体路径而定
  * @param mainClass  应用的主类(包含包路径)
  * @return
  */
 public String getRunStr(boolean isWin, String libSrcPath, String libDestPath,
   String mainClass) {
  String rsstr = "";
  StringBuffer contentstr = new StringBuffer("");
  File f = new File(libSrcPath);
  if (f.exists() && f.isDirectory()) {
   File[] files = f.listFiles();
   for (int i = 0; i < files.length; i++) {
    if (files[i].exists() && files[i].isFile())
     if (isWin) {
      contentstr.append(libDestPath + "/" + files[i].getName()
        + ";");
     } else {
      contentstr.append(libDestPath + "/" + files[i].getName()
        + ":");
     }
   }
  }
  if (isWin) {
   rsstr += "@echo off/n";
   rsstr += "Title " + mainClass + " /n";
   rsstr += "java -classpath ./bin;" + contentstr.toString() + " "
     + mainClass + "/n";
   rsstr += "@echo on";
  } else {
   rsstr += "java -classpath ./bin:" + contentstr.toString() + " "
     + mainClass + " > /dev/null &";
  }
  return rsstr;
 }
}

原创粉丝点击