[英]Issue with setting environment variable through bat file to execute a java program
我有一个批处理文件,用于设置环境变量,如下所示
@echo off
echo -- Setting Environment variables --
set "TH=D:\apache-tomcat-7.0.37\";
set "WEB-INF=%TH%webapps\ROOT\WEB-INF";
set "CLASSES_HOME=%WEB-INF%\classes";
set "CONFIG=%WEB-INF%\config-files";
set "JARS=%TH%webapps\ROOT\WEB-INF\lib";
set "JAVA_HOME=C:\Program Files\Java\jdk1.7.0_45";
set "_JAVA_OPTIONS=-Djava.net.preferIPv4Stack=true";
set "path=%path%;%JAVA_HOME%\bin;%WEB-INF%;%JARS%\jacob";
setLocal EnableDelayedExpansion
set "CLASSPATH=.;C:\WINNT\system32;%CLASSES_HOME%;%CONFIG%";
for %%a in ("%TH%lib\*.jar") do (
set CLASSPATH=!CLASSPATH!;%%a
)
for %%a in ("%CONFIG%\*.lic") do (
set CLASSPATH=!CLASSPATH!;%%a
)
for %%a in ("%JARS%\*.jar") do (
set CLASSPATH=!CLASSPATH!;%%a
)
set CLASSPATH=!CLASSPATH!
echo %CLASSPATH%
echo %path%
现在我有第二个批处理文件,它调用第一个批处理文件来设置环境变量,然后调用java类,如下所示
call D:\myFolder\setEnvironmentvaribales.bat
java -Xms256m -Xmx1024m com.myproject.java.runBatchToDelete
这是一个异常,说明无法找到main方法。 我知道java类没有问题因为我可以直接运行这个程序。 我相信由于某种原因,setEnvironmentvaribales.bat中的类路径和路径设置未正确设置。 任何帮助解决这个问题将不胜感激。
改变这一行:
set CLASSPATH=!CLASSPATH!
通过这个:
endlocal & set CLASSPATH=%CLASSPATH%
我一直在尝试这个,由于某种原因,似乎EnableDelayedExpansion会以某种方式干扰设置环境变量的能力,然后在批处理文件完成后可以看到这些变量。 您的批处理文件显示echo %CLASSPATH%
。 尝试在第二个批处理文件中call
echo %CLASSPATH%
。 如果输出不同,您可能会遇到我遇到的同样问题。
我唯一可以工作的东西:在setEnvironmentVariables.bat
(或setEnvironmentVaribales.bat
)的末尾,添加
echo set CLASSPATH=%CLASSPATH% > sometemporary.bat
然后,在第二个批处理文件中, call
结束后,
call sometemporary.bat
这似乎有效。 您应该添加一个命令来删除临时文件。
PS走向终点的线
set CLASSPATH=!CLASSPATH!
可能是多余的。 看起来您可能正在尝试找到一种方法来获取其他脚本使用的变量集,但它似乎不起作用。
PPS。 好的,Aacini的答案效果更好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.