所以我知道不同的操作系统需要不同的类路径分隔符。我正在运行一系列窗口,其中CMD已被Powershell取代,这在使用分号分隔符时会导致问题。
我正在尝试运行的命令以cmd /c
开始尝试让它在命令提示符下运行,但我认为当PowerShell解析整个命令时它会看到分号并认为这是结束!
我的全部命令是:
cmd /c javac -cp PATH1;PATH2 -d DESTINATION_PATH SOURCE_PATH
我尝试过使用空格,冒号和句号无效。有人可以提出解决方案吗?
这是我关于stackoverflow的第一个问题,希望社区可以提供帮助,并最终帮助其他人。 :)
答案 0 :(得分:0)
我建议您使用Powershell以下列方式启动该过程
Start-Process cmd.exe -ArgumentList "/c javac -cp PATH1;PATH2 -d DESTINATION_PATH SOURCE_PATH" -NoNewWindow
答案 1 :(得分:0)
不应该要求在CMD中运行javac
。只需在(可能)包含空格或特殊字符的参数周围加上引号。我还建议您使用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
答案 2 :(得分:0)
javac -classpath“ path1:path2:”。 main.java在powershell中可以解决问题。该cmd不需要用引号引起来,但是在使用powershell时,我们需要加上引号,它可以平稳地工作。