java - 如何使用批处理脚本中的参数调用程序?

标签 java windows batch-file

我喜欢确定哪些 Java 运行时环境可用并检查它们的版本。我的代码将输出正确的 jre 路径,但无法执行 java.exe。

当程序路径是变量时,使用批处理脚本中的参数调用程序的正确方法是什么?

我的脚本

@echo off


:findjres
for /d %%i in ("C:\Program Files\Java\jre*") do (
    set /a cpath+=1
    call :pushpath "%%i"
)
for /d %%i in ("C:\Program Files (x86)\Java\jre*") do (
    set /a cpath+=1
    call :pushpath "%%i"
)
goto :versjres


:pushpath
set tpath=%1
set xpath!%cpath%=%tpath:~1,-1%
goto :end

:versjres
for /f "usebackq delims==! tokens=1-3" %%i IN (`set xpath`) do (
    echo Array field number %%j have value %%k
    %%k\bin\java.exe --version
)

pause


:end

错误

Exception in thread "main" java.lang.NoClassDefFoundError: Files
Caused by: java.lang.ClassNotFoundException: Files
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: Files.  Program will exit.

最佳答案

换行

%%k\bin\java.exe --version

"%%k\bin\java.exe" -version

它对我有用。

关于java - 如何使用批处理脚本中的参数调用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12060432/

相关文章:

java - 前端或后端的 api 错误消息的国际化?

Java JUnit 重构测试以删除相同的测试

c++ - 在 Linux 中清理无限循环应用程序的正确方法是什么?

java - 在 Eclipse 中运行批处理文件会填充未知目录

windows - 将退出代码从 exec 的批处理文件传播回 ant

batch-file - DOS 7 中的 SET 命令等效项

java - 将 favicon 设置为 maven-javadoc-plugin 生成的 javadoc 文件

Java 光滑;延迟后运行命令而不循环;

windows - 如何在 Windows 命令提示符下通过串口发送文件

windows - 如何使用 Windows 命令行打开提升的 cmd?