【问题标题】:javac powershell classpath separatorjavac powershell 类路径分隔符
【发布时间】:2017-01-07 18:47:15
【问题描述】:

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

我尝试运行的命令以 cmd /c 开头,试图让它在命令提示符下运行,但我认为当 PowerShell 解析整个命令时,它会看到分号并认为这就是结束!

我的整个命令是:

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

我曾尝试使用空格、冒号和句点,但无济于事。有人可以提出解决方案吗?

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

【问题讨论】:

  • -cp "PATH1;PATH2"

标签: powershell classpath javac separator


【解决方案1】:

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

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

【讨论】:

  • “CMD 已被替换”是什么意思? CMD 适用于所有 Microsoft 操作系统,包括但不限于最新的“Windows 10”。
  • 无法运行的机器正在使用来自 Windows Insider 程序的 Windows 技术预览版。我指的是link 所以CMD 仍然存在,但我相信在我的java 程序的底层,它构建了命令String[] PowerShell 被用来执行它。我将命令复制粘贴到 CMD 和 PowerShell 的结果支持这一点。
  • 感谢您的解决方案。详细说明 PowerShell '替换' CMD。我在想,在 Windows 的最新预览版本中,由 java 代码 Process pro = Runtime.getRuntime().exec(String[] cmdArray, String[] envp, File dir); 创建的进程现在是在 PowerShell 而不是命令提示符中运行的。尽管我最初的尝试似乎支持该理论,但错误实际上在不同的地方。
【解决方案2】:

不应要求在 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

【讨论】:

  • 感谢您对将PATH1;PATH2 放在双引号中的评论。这部分解决了问题。我可以从 CMD 调用 javac,但我认为我没有正确设置 PowerShell 以仅使用 javac。我很确定你的喷溅解决方案可以解决问题。
  • 基本设置只需要环境变量JAVA_HOME(指向安装JDK的文件夹)和javac.exe的路径(通常是%JAVA_HOME%\bin)你的 PATH 环境变量。这两个环境变量都会影响 CMD 和 PowerShell,即如果您的设置在 CMD 中工作,它也应该在 PowerShell 中工作。
【解决方案3】:

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

【讨论】:

  • 虽然这个答案在正确的轨道上,但':'将不起作用。它必须是分号';'。
猜你喜欢
  • 2022-07-30
  • 2014-07-29
  • 2018-04-25
  • 2011-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
相关资源
最近更新 更多