从 Windows 批处理文件运行 Java 导致批处理文件停止

从 Windows 批处理文件运行 Java 导致批处理文件停止

当我从 Windows .cmd 文件(这里是 Vista 32 位)运行 Java 时,Java 命令会导致批处理文件停止执行其他命令。

例如,这是一个简单的 test.cmd 文件:

java
java

这应该会导致 Java 打印两次帮助消息。但是当我在 cmd.exe 中运行它时,我得到了以下信息:

C:\>test

C:\>java
Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)

where options include:
    -client       to select the "client" VM
    -server       to select the "server" VM
...

C:\>

当 Java 退出时,批处理文件也会退出。这是怎么回事?

答案1

另一种可能性是,正在调用的是一个名为 java 的批处理文件,而不是正常的 java.exe(尽管批处理文件可能会调用可执行文件,也可能事先设置 CLASSPATH 之类的内容)。从另一个批处理文件执行批处理文件会将执行完全转移到另一个批处理文件,而不会返回到调用者。要执行它然后继续执行原始批处理文件,请使用调用:

call java

看看是否有什么不同。

答案2

如果您同时有 test.bat 和 test.cmd,那么输入test将运行 test.bat 而不是 test.cmd - 尝试使用命令test.cmd

C:\>类型 test.bat
@echo 关闭
回声 a ==================================================
Java 语言
echo b =============================================

C:\>类型 test.cmd
回声1 -------------------------------------------------
Java 语言
回声2 -------------------------------------------------
Java 语言
回声3 -------------------------------------------------

C:\>测试

一个===============================================

用法:java [-options] class [args...]
           (执行课程)
   或 java [-options] -jar jarfile [args...]
           (执行 jar 文件)

其中选项包括:
    -client 选择“客户端”虚拟机
    -server 选择“服务器”虚拟机
    -hotspot 是“客户端”虚拟机的同义词[已弃用]
                  默认 VM 是客户端。

...

b =============================================

目录:\>

答案3

快速测试:

C:\> where java

通过它,您可以准确地了解正在执行的操作。

相关内容