繁体   English   中英

通过bat文件设置环境变量来执行java程序的问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM