读取对象时出现ClassNotFound错误(Tomcat)

我将尽我所能解释这一点!我有使用Maven创建的战争和Jar。 JAR包包含一些通用类,其他war文件也将使用这些类。因此,我试图初始化log4j 2对象并从log4j配置XML中获取一些值。我添加了:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.12.1</version>
</dependency>

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.12.1</version>
</dependency>

在WAR和JAR的pom文件中。因此,我在war文件的一个类中创建了LoggerContext对象。然后,对象将传递到JAR文件中的类之一。

LoggerContext loggerContext  = (LoggerContext) LogManager.getcontext(false);
        String configFilePath = servletContext.getRealPath(WebInit.getProperty("log4jPropertiesFileName"));
        File loggingConfigFile = new File(configFilePath);

        loggerContext.setConfigLocation(loggingConfigFile.toURI()); 

        log = new RunningLog(loggerContext,logHostName,"MyAPP","ALL","MyAPP");

RunningLog类位于JAR文件中。因此,当我尝试对loggerContext对象执行任何操作时,出现错误:

04-Nov-2019 13:45:07.852 SEVERE [main] org.apache.catalina.core.StandardContext.loadOnStartup Servlet [InitialiseMyAPP] in web application [/MyAPP] threw load() exception
java.lang.ClassnotFoundException: org.apache.logging.log4j.core.LoggerContext
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

引发异常的行是:

setOracleSchema(loggerContext.getconfiguration().getStrSubstitutor().getVariableResolver().lookup("Schema"));

我将JAR文件放在Tomcat的lib文件夹中,并将WAR文件放在webapps文件夹中。首先,我认为我需要在lib文件夹中分别添加log4j jar。所以我也尝试过。但是,当我尝试运行它时,会引发LinkageError。如果您有任何疑问/疑问,请告诉我。任何帮助,将不胜感激。挣扎了两天!

liyuan16888 回答:读取对象时出现ClassNotFound错误(Tomcat)

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3168199.html

大家都在问