![](/img/trans.png)
[英]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.