我有一个script.bat
,如下所示:
c:\windows\system32\java.exe -version
pause
如果我从命令窗口运行脚本,它可以正常工作,并输出Java版本信息:
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
但是,我在Excel中也有一个调用相同脚本的VBA宏:
Shell "C:\users\Matt\script.bat", vbNormalFocus
执行.bat
文件,但在查找Java时遇到问题:
C:\Users\Matt\Documents>c:\windows\system32\java.exe -version
'c:\windows\system32\java.exe' is not recognized as an internal or external command,
operable program or batch file.
关于出了什么问题的任何想法?奇怪的是,这在许多其他机器上运行良好,只是在这台笔记本电脑上失败了(64位Windows 7,使用Excel 2010)。
答案 0 :(得分:3)
这似乎与此处描述的问题相同:
http://betterlogic.com/roger/2011/04/cannotunable-to-run-java-exe-from-cwindowssystem32/
即,Windows正在尝试some 64-bit compatibility magic将C:\Windows\System32\java.exe
重定向到C:\Windows\SysWOW64\java.exe
,但Java并未在该位置安装合适的exe。
答案 1 :(得分:1)
我通过从C:\ Windows \ system32复制我的java1.7 64位安装的exe并将它们粘贴到C:\ Windows \ SysWOW64来解决这个问题。我不知道这是否适用于其他版本的java,它不需要使用32位java安装。使用此方法,不需要更新或维护路径环境变量。
答案 2 :(得分:-1)
我认为这是因为你必须通过解压缩二进制文件来安装java。
路径设置正确,因为它在命令行上运行,但在您提供完整路径时却没有。运行以下命令获取java.exe目录。
c:\> for %i in (java.exe) do @echo. %~$PATH:i