3

我正在继承一个项目,并且(根据其他开发人员的说明)catalina.bat用他的(他使用相同的版本)覆盖了我的 Tomcat 版本。然后我尝试重新启动 Tomcat 并得到一个与commons-logging.jarTomcat 依赖项相关的异常。

在经历了很多挫折之后,我刚刚下载了一个不同版本的 Tomcat 并尝试直接运行它(没有配置)......我得到了同样的错误!

所以几天前我在SO上问了这个问题。共识是我的类路径不知何故变得“脏”,现在我想知道catalina.bat我盲目复制的文件是否以某种方式设置了影响 Tomcat 引导能力的环境变量——甚至跨版本。

我知道这个问题与我问的另一个问题相似,但有所不同。虽然我的第一个问题是“这里出了什么问题”并且更笼统,但我现在要问的(尽管相关)更具体,是关于catalina.bat它与 Windows 7 环境变量的关系以及它与 Windows 7 环境变量的关系。

感谢您在这里的任何帮助。

编辑:我看到这个问题已经有一个“离题”的密切投票。我反对的观点如下:SO 是一个编程问答网站,用于询问与代码和编程相关的特定问题。catalina.bat是一个脚本,它是代码,这个问题与我正在使用的脚本中的潜在错误/缺陷有关。

编辑:找到catalina.bat错误消息来自的行(同样,Tomcat 启动正在死亡的地方)。这是行(从 7.0.19 的未更改版本开始):

%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME% " -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

我能够放置echos在脚本中并获得以下值:

JAVA_OPTS = -Djava.util.logging.config.file="C:\Program Files\Apache\apache-to
mcat-7.0.19\conf\logging.properties" -Djava.util.logging.manager=org.apache.juli
.ClassLoaderLogManager
CATALINA_OPTS =
DEBUG_OPTS =
JAVA_ENDORSED_DIRS = C:\Program Files\Apache\apache-tomcat-7.0.19\endorsed
CLASSPATH = C:\Program Files\Apache\apache-tomcat-7.0.19\bin\bootstrap.jar
CATALINA_BASE = C:\Program Files\Apache\apache-tomcat-7.0.19
CATALINA_HOME = C:\Program Files\Apache\apache-tomcat-7.0.19
CATALINA_TMPDIR = C:\Program Files\Apache\apache-tomcat-7.0.19\temp
MAINCLASS is org.apache.catalina.startup.Bootstrap
CMD_LINE_ARGS =
ACTION = start

JAVA_OPTS 让我全神贯注于logging.propertiesClassLoaderLogManager条目。这对任何人都意味着什么?!?

4

2 回答 2

2

you can set the environment variables in any batch file, including catalina.bat. But these changes stay only in the current running environment and will not affect all the other running environments.

For CLASSPATH, look in the corresponding batch files if you see something like set CLASSPATH= which give you information about the classpath being set.

于 2012-03-14T12:16:31.563 回答
1

Looking at previous answers in your other question, it doesn't appear that the consensus was that the classpath had gotten 'dirty'. But that rather the Tomcat setup itself had become dirty by being a mix of several different Tomcat versions.

Note that Tomcat, by default, does not use values from your CLASSPATH, precisely to avoid problems like you outlined. You should examine the file your coworker gave you to see what exactly he changed in it (considering you can script out pretty much anything in a BAT file it's almost impossible to pin down the exact problem based on the description you've given).

Good luck.

于 2012-03-14T12:13:18.633 回答