Java 读取对象(Tomcat)时发生ClassNotFound错误
我会尽我所能解释这件事!我用maven创建了一个war和jar。JAR包包含一些公共类,其他war文件也将使用这些类。因此,我尝试初始化log4j2对象,并从log4j配置XML中获取一些值。我补充说:Java 读取对象(Tomcat)时发生ClassNotFound错误,java,maven,tomcat,servlets,classpath,Java,Maven,Tomcat,Servlets,Classpath,我会尽我所能解释这件事!我用maven创建了一个war和jar。JAR包包含一些公共类,其他war文件也将使用这些类。因此,我尝试初始化log4j2对象,并从log4j配置XML中获取一些值。我补充说: <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version&g
<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>
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文件夹中分别添加log4jjar。所以我也试过了。但当我尝试运行它时,它会抛出一个LinkageError。如果您有问题/澄清,请让我知道。在此方面的任何帮助都将不胜感激。为此奋斗了两天 你为什么要将jar文件(不是文件?)放入
/tomcat/lib
而不是保存在war文件中?请告诉我你正在使用的tomcat和Java版本。@Kayman如果我这样做,在jar中创建的对象是否可以共享?如果我从A.war创建一个对象,B.war能访问它的值吗?@ahmaddr.Sedighi我使用的是Tomcat 9.0.27和JDK 1.8我唯一能说的是,我将JAR文件添加为一个范围为“提供”的依赖项。但当我把它改为编译时,它开始工作了。但是现在这些对象并没有将价值从一场战争持续到另一场战争。
setOracleSchema(loggerContext.getConfiguration().getStrSubstitutor().getVariableResolver().lookup("Schema"));