javac powershell 类路径分隔符

javac powershell classpath separator

所以我知道不同的操作系统需要不同的类路径分隔符。我正在 运行构建 windows,其中 CMD 已替换为 Powershell,这在使用分号分隔符时会导致问题。

我正在尝试 运行 的命令以 cmd /c 开头,试图在命令提示符中将其改为 运行 但我认为当 PowerShell 正在解析整个命令时看到分号以为到此结束!

我的全部命令是:

cmd /c javac -cp PATH1;PATH2 -d DESTINATION_PATH SOURCE_PATH

我试过使用 space、冒号和句点,但没有用。有人可以提出解决方案吗?

这是我关于Whosebug的第一个问题,希望社区能够提供帮助,并最终帮助到其他人。 :)

我建议您使用 Powershell 按以下方式启动该过程

Start-Process cmd.exe -ArgumentList "/c javac -cp PATH1;PATH2 -d DESTINATION_PATH SOURCE_PATH" -NoNewWindow

运行 javac 在 CMD 中不应该是必需的。只需在(可能)包含空格或特殊字符的参数周围加上引号。我还建议使用 call operator (&)。在这种情况下它是可选的,但如果您将可执行文件放在引号中(例如,因为可执行文件或路径包含空格或者您想将其放在变量中),则它是必需的。

& javac -cp "PATH1;PATH2" -d "DESTINATION_PATH" "SOURCE_PATH"

您也可以使用 splatting 来提供参数:

$javac  = "$env:JAVA_HOME\bin\javac.exe"
$params = '-cp', "PATH1;PATH2",
          '-d', "DESTINATION_PATH",
          "SOURCE_PATH"

& $javac @params

javac -classpath "path1:path2:." main.java 在 powershell 中发挥作用。 cmd 不需要双引号,但是在使用 powershell 时我们需要输入引号并且它运行顺利。