java - powershell运行java进程问题

标签 java command-line powershell

我正在尝试通过 Windows XP 中的 Powershell 运行 java 进程。这是命令:

java.exe -cp .;./common.jar -Dcontext=atest1 -Dresourcepath=. DW_Install

因此,类路径是 .和 .\common.jar(我认为 java 使用了错误的斜杠,对吧?)有两个环境变量,一个是“atest1”,另一个是“.”。执行 main 的类是 DW_Install(在默认包中)。

此命令在 cmd.exe 中有效,但在 PS 中无效。这是怎么回事? PS 在解析此 CMD 不执行的命令(反之亦然)时在做什么?

亚伦

最佳答案

问题是 PS 出于某种原因解析 -Dresourcepath=. 与 cmd 不同。有效的是

java -cp '.;.\common.jar' -Dcontext=atest1 "-Dresourcepath=." DW_Install

斜线的走向无关紧要,使用引号('")也无关紧要。必须对类路径进行转义,但是,带有某种引号。查看 PS 解释器得到什么的一个很好的测试是回显它。以下内容:

echo java -cp '.;.\common.jar' -Dcontext=atest1 -Dresourcepath=. DW_Install

产生以下输出:

java
-cp
.;.\common.jar
-Dcontext=atest1
-Dresourcepath=
.
DW_Install

(注意资源路径和资源路径的值不在同一行。)而输出到

echo java -cp '.;.\common.jar' -Dcontext=atest1 '-Dresourcepath=.' DW_Install

产生以下输出:

java
-cp
.;.\common.jar
-Dcontext=etaste1
-Dresourcepath=.
DW_Install

这更符合我们的喜好。

虽然我不希望你们遇到这种情况,但我希望这篇文章能帮助那些必须在 Windows 机器上部署 java 项目的人(即使它们永远不会在任何其他平台上运行)。

关于java - powershell运行java进程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4685184/

相关文章:

powershell - 将输入的数字修改为特定的模式格式?

java - 如果列表包含值则渲染 Primefaces

java - 我如何知道 wifi 连接是否有效?

java - Android - java.net.ConnectException : failed to connect - connect failed: EMFILE (Too many open files)

bash - 删除其中包含 '3' 的文件的单个命令

powershell - 在此处字符串中的子表达式中迭代会产生额外的空格,为什么?

java - 什么是NullPointerException,我该如何解决?

json - jq通过特定的key统计json中的item个数

command-line - 如何通过命令行在 Makefile 中取消定义变量

c# - 如何从 .Net 程序运行 Import-PSSessions