想实现一个功能:
将指定路径下的所有class文件压成jar包。
在网上搜索了很久没找到,自己写了一个。
代码如下:
/**
* 将classPath路径下的所有文件,打成jar包。
* jar包的路径是${binJarPath}\${binJarName}.jar
*
* 主要还是里面工具包里面的jar命令部分的代码
* @param binJarPath 生成jar包的地址
* @param binJarName 生成jar包的名字
* @param classPath 所有的.class文件所在的路径
*/
public static void jarcvf(String binJarPath, String binJarName, String classPath) throws Exception {
if (new File(classPath).exists()) {
Class clazz = Class.forName("sun.tools.jar.Main");
Constructor constructor = clazz.getConstructor(new Class[]{PrintStream.class, PrintStream.class, String.class});
Object object = constructor.newInstance(System.out, System.err, "jar");
Method method = clazz.getMethod("run", String[].class);
String[] args = new String[5];
args[0] = "-cvf";
args[1] = binJarPath + binJarName;
args[2] = "-C";
args[3] = classPath;
args[4] = ".";
method.invoke(object, new Object[]{args});
}
}