生存运行批处理程序(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;
}
}