添加一个目录到tomcat classpath
我在C:驱动器中有一个文件夹作为C:\app_config\java_app此文件夹包含一些特定于语言环境的属性文件。 
 我有一个Java类( PrjPropertilesLocator ),加载属性文件的基础上启动Web App的默认区域设置。我的web应用程序运行在tomcat内部。 问题是我应该如何设置这个目录C:\app_config\java_app在tomcat类path中,以便PrjPropertilesLocator类中的ResourceBundle可用。 有没有办法,我可以设置此文件夹专门为一个单一的Web应用程序需要它。我不想把属性文件内的WEB-INF/classes文件夹。 
 在weblogic上运行fine.I在其启动脚本之一中设置weblogic classpath中的目录,并且工作正常。 但是在Tomcat上,我尝试将它放在startup.bat中的startup.bat中,但是无法成功执行。 
 只需在shared.loader或common.loader属性中指定它/conf/catalina.properties 。 
另请参见问题: 我可以在Tomcat中为每个应用程序创build一个自定义类path
  Tomcat 7 上下文保存Loader元素。 根据文档部署描述符( <Context>标签中)可以放置在: 
-   $CATALINA_BASE/conf/server.xml– 坏 – 要求服务器重新启动,以重新configuration
-   $CATALINA_BASE/conf/context.xml– bad – 在所有应用程序中共享
-   $CATALINA_BASE/work/$APP.war:/META-INF/context.xml– 坏 – 需要重新打包才能更改configuration
-   $CATALINA_BASE/work/[enginename]/[hostname]/$APP/META-INF/context.xml– 不错 ,但看到最后一个选项!
-   $CATALINA_BASE/webapps/$APP/META-INF/context.xml– 很好 ,但看到最后的select!
-   $CATALINA_BASE/conf/[enginename]/[hostname]/$APP.xml– 最好 – 完全不在应用程序中,并自动扫描更改!
 在这里,我的configuration演示了如何使用$CATALINA_BASE层次结构中的项目文件的开发版本(注意,我把这个文件放在src/test/resources目录下,并构buildMaven来通过pom.xml预处理${basedir}占位符<filtering>true</filtering>所以在build立新的环境之后,我将它复制到$CATALINA_BASE/conf/Catalina/localhost/$APP.xml : 
 <Context docBase="${basedir}/src/main/webapp" reloadable="true"> <!-- http://tomcat.apache.org/tomcat-7.0-doc/config/context.html --> <Resources className="org.apache.naming.resources.VirtualDirContext" extraResourcePaths="/WEB-INF/classes=${basedir}/target/classes,/WEB-INF/lib=${basedir}/target/${project.build.finalName}/WEB-INF/lib"/> <Loader className="org.apache.catalina.loader.VirtualWebappLoader" virtualClasspath="${basedir}/target/classes;${basedir}/target/${project.build.finalName}/WEB-INF/lib"/> <JarScanner scanAllDirectories="true"/> <!-- Use development version of JS/CSS files. --> <Parameter name="min" value="dev"/> <Environment name="app.devel.ldap" value="USER" type="java.lang.String" override="true"/> <Environment name="app.devel.permitAll" value="true" type="java.lang.String" override="true"/> </Context> 
  更新 Tomcat 8更改 <Resources>和<Loader>元素的语法 ,相应的部分现在看起来像: 
 <Resources> <PostResources className="org.apache.catalina.webresources.DirResourceSet" webAppMount="/WEB-INF/classes" base="${basedir}/target/classes" /> <PostResources className="org.apache.catalina.webresources.DirResourceSet" webAppMount="/WEB-INF/lib" base="${basedir}/target/${project.build.finalName}/WEB-INF/lib" /> </Resources> 
在Tomcat 6中,环境中的CLASSPATH将被忽略。 在setclasspath.bat中,你会看到
 set CLASSPATH=%JAVA_HOME%\lib\tools.jar 
那么在catalina.bat中,就是这样使用的
 %_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% 
我没有看到包含的其他variables,所以我认为你一直在编辑setclasspath.bat,并改变CLASSPATH的构build方式。 对于Tomcat 6.0.20,这个改变就像setclasspath.bat的74一样
 set CLASSPATH=C:\app_config\java_app;%JAVA_HOME%\lib\tools.jar 
 我build议你做的是在.war文件中添加一个MANIFEST.MF文件的META-INF目录。 
 请注意,根据servlet规范,它必须是.war文件,而不是.war目录, META-INF/MANIFEST.MF将被容器读取。 
 编辑MANIFEST.MF类path属性到C:\app_config\java_app : 
请参阅使用JAR文件:基本知识(了解清单)
请享用。
您可以在tomcats bin目录内创build一个新文件setenv.sh(或setenv.bat),并在其中添加以下行
 export CLASSPATH=$CLASSPATH:/XX/xx/PATH_TO_DIR