Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读取对象(Tomcat)时发生ClassNotFound错误_Java_Maven_Tomcat_Servlets_Classpath - Fatal编程技术网

Java 读取对象(Tomcat)时发生ClassNotFound错误

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

我会尽我所能解释这件事!我用maven创建了一个war和jar。JAR包包含一些公共类,其他war文件也将使用这些类。因此,我尝试初始化log4j2对象,并从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>
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"));