JavaCompiler 类路径 Windows 与 Linux

JavaCompiler classpath Windows vs Linux

我想制作一个可以生成和编译 java 源代码并从中生成 jar 文件的工具:

为此,我使用 Java编译器:

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

当我将类路径添加到 Java SystemCompiler 时:

optionList.addAll(Arrays.asList("-cp", classpath));

当我用“;”设置我的类路径时,它适用于 Windows作为分隔符:

classpath = "jar1.jar;jar2.jar;dir/jar3.jar;dir/jar4.jar";

在Linux中它失败了。

当我使用 space 而不是 ;喜欢:

classpath = "jar1.jar jar2.jar lib/jar3.jar lib/jar4.jar";

两个系统都失败了。

同样适用于:

classpath = "lib/*"

我需要一个可以独立生成工作类路径系统的解决方案。

更新(解决方案):

好的,我发现有 java 个优惠

File.pathseparator 

对应系统环境变化

另见 File.separator or File.pathSeparator

在 linux 你应该使用 :

CLASSPATH = path1:path2:...

Oracle 文档:

Linux

Windows

在 linux 上使用 :,而不是您经常在 windows 上使用的 ;