[英]Logging system failed to initialize using configuration from 'classpath:logger/logback-spring.xml'
[英]"java.lang.IllegalStateException: Could not initialize Logback logging from classpath:logback-spring.xml" in logback-spring.xml level configuration
我已经将 logback-spring.xml 添加到 class 路径中,它工作正常,直到我添加了一些 ISO 消息转换的依赖项。(深红色依赖项在 JPOS 库中被硬编码,因此无法删除)
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.7</version>
<relativePath/>
</parent>
<groupId>com.test</groupId>
<artifactId>iso-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>iso-test</name>
<description>test</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>2.4.4</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.jpos</groupId>
<artifactId>jpos</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>crimson</groupId>
<artifactId>crimson</artifactId>
<version>1.1.3</version>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
然后 logback-spring.xml 读取有一个问题,但有以下异常。
java.lang.IllegalStateException:无法从类路径初始化 Logback 日志记录:logback-spring.xml'
和
引起:org.xml.sax.SAXNotSupportedException:特征: http://xml.org/sax/features/external-general-entities
下面是 JPOS 打包器(GenericValidatingPackager.class)使用 crimson 库的地方。
public void readFile(String filename) throws ISOException {
XMLReader reader=XMLReaderFactory.createXMLReader(System.getProperty("sax.parser", "org.apache.crimson.parser.XMLReaderImpl"));
...
}
crimson 依赖项硬编码在 JPOS 库中,因此无法删除
这个不对,参考JPOS packager(GenericValidatingPackager.class)
XMLReader reader = XMLReaderFactory.createXMLReader(System.getProperty("sax.parser", "org.apache.crimson.parser.XMLReaderImpl"));
这一行只是告诉我们,如果我们不设置属性“sax.parser”,我们将使用org.apache.crimson.parser.XMLReaderImpl
作为回退。
那么我们需要的是:
crimson
依赖System.setProperty("sax.parser", "com.sun.org.apache.xerces.internal.parsers.SAXParser");
如果您使用现代 JVM(1.8 及更高版本),jPOS 不需要 Crimson。
它在过去被用作后备,如果 JVM 没有提供 XMLReader,并且org.xml.sax.driver
没有配置。
此外,我建议使用最新版本(请参阅 ChangeLog) ,因为自 2017 年的 2.1.0 以来已经有了很多改进。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.