我们在写动态编译的时候,开发环境是Windows,在编译的时候正常,而把代码部署到Linux环境的时候,就会出现编译失败的问题。其实主要作怪的是"-cp"参数中的包分隔符问题导致的。Windows默认分隔符是英文分号";",而Linux的分隔符则是英文冒号":",所以我们要对操作系统做判断,在不同操作系统下面区分分隔符。示例代码如下:
...代码忽略
// 分隔符,linux使用":",而windows使用";"
String osName = System.getProperty("os.name").toLowerCase();
String separator;
if ("linux".equals(osName)) {
separator= ":";
} else {
separator= ";";
}
// 依赖包
StringBuilder dependentSb = new StringBuilder();
File libFile = new File(dependentLibPath);
for (File f : Objects.requireNonNull(libFile.listFiles())) {
if (f.isFile() && f.getName().endsWith(".jar")) {
dependentSb.append(f.getAbsolutePath()).append(separator);
}
}
...代码忽略