2

私は、すべてが同じアプリにコンパイルされた約 8 つの個別のパッケージで構成される Struts 1 アプリを継承しました。私はそのantビルドスクリプトを書き直すことを任されました。以前は、すべての構成ファイルを個別に /usr/local/tomcat/shared/classes ディレクトリにコピーしていましたが、運用チームから合理化を求められたため、ビルド スクリプトは tomcat にドロップできる war ファイルを作成するだけです。

ConfigurationManager クラスが構成ファイルをロードしようとすると、エラーが発生します。このファイル config.xml は、アプリの残りの部分と連携する前に、現在 WEB-INF にコピーされています。したがって、爆発した戦争 (ROOT) を見ると、/usr/local/tomcat/webapps/ROOT/WEB-INF/config.xml. ConfigurationManager の関連部分は次のとおりです。

private static final String BASE_CONFIG_FILE = "WEB-INF/config.xml";

private void loadConfigFiles() throws RCConfigurationException {
    try {
        log.error("classpath: " + System.getProperty("java.class.path"));

        ConfigurationFactory factory = new ConfigurationFactory();
        URL configURL = getClass().getResource(BASE_CONFIG_FILE);
        factory.setConfigurationURL(configURL);
        config = factory.getConfiguration();

    } catch (ConfigurationException e) {
        log.error("Exception loading configuration files.", e);
        throw new RCConfigurationException("Exception loading configuration files", e);
    }
}

log.error() 呼び出しはこれを出力します:

13:16:10,561 ERROR ConfigurationManager:75 - classpath: /usr/local/tomcat/bin/bootstrap.jar

私のlocalhost.2013-01-29.logはこれを示しています:

SEVERE: Exception starting filter GlobalRootManager
java.lang.ExceptionInInitializerError
    at com.rc.util.config.ConfigurationManager.getInstance(ConfigurationManager.java:66)
    at com.rc.commonbusinesswebapp.servlet.filter.GlobalRootManager.init(GlobalRootManager.java:42)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4072)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4726)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943)
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
    at org.apache.catalina.core.StandardService.start(StandardService.java:525)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.NullPointerException
    at org.apache.commons.configuration.ConfigurationFactory.setConfigurationURL(ConfigurationFactory.java:220)
    at com.rc.util.config.ConfigurationManager.loadConfigFiles(ConfigurationManager.java:79)
    at com.rc.util.config.ConfigurationManager.<init>(ConfigurationManager.java:55)
    at com.rc.util.config.ConfigurationManager.<init>(ConfigurationManager.java:26)
    at com.rc.util.config.ConfigurationManager$LazyHolder.<clinit>(ConfigurationManager.java:37)
    ... 29 more

私は自分の車輪を回転させているので、ここの誰かが私を助けてくれることを願っています. ありがとう。

4

1 に答える 1

3

WEB-INFWeb アプリのクラスパスにありません。

WEB-INF/classesは; 構成ファイルをクラスパス リソースとしてロードする場合、1 つのオプションはクラスパスのルートにファイルを配置することです。

于 2013-01-29T21:00:48.460 に答える