Java 遇到;这段代码不应该进入jar中;错误

Java 遇到;这段代码不应该进入jar中;错误,java,maven,slf4j,Java,Maven,Slf4j,我创建了一个使用Hikari CP的应用程序,该应用程序的用户遇到以下错误: java.lang.ExceptionInInitializerError at org.slf4j.LoggerFactory.bind(LoggerFactory.java:121) ~[?:?] at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:111) ~[?:?] at org.slf4j.Logge

我创建了一个使用Hikari CP的应用程序,该应用程序的用户遇到以下错误:

java.lang.ExceptionInInitializerError
    at org.slf4j.LoggerFactory.bind(LoggerFactory.java:121) ~[?:?]
    at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:111) ~[?:?]
    at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:268) ~[?:?]
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:241) ~[?:?]
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:254) ~[?:?]
    at com.zaxxer.hikari.AbstractHikariConfig.<clinit>(AbstractHikariConfig.java:43) ~[?:?]
Caused by: java.lang.UnsupportedOperationException: This code should have never made it into the jar
    at org.slf4j.impl.StaticLoggerBinder.<init>(StaticLoggerBinder.java:63) ~[?:?]
    at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:44) ~[?:?]
java.lang.ExceptionInInitializeError
在org.slf4j.LoggerFactory.bind(LoggerFactory.java:121)~[?:?]
在org.slf4j.LoggerFactory.performinization(LoggerFactory.java:111)~[?:?]
在org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:268)~[?:?]
在org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:241)~[?:?]
在org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:254)~[?:?]
在com.zaxxer.hikari.AbstractHikariConfig.(AbstractHikariConfig.java:43)~[?:?]
原因:java.lang.UnsupportedOperationException:此代码不应该进入jar
在org.slf4j.impl.StaticLoggerBinder.(StaticLoggerBinder.java:63)~[?:?]
在org.slf4j.impl.StaticLoggerBinder.(StaticLoggerBinder.java:44)~[?:?]
我没有包含任何代码,因为我不确定哪些代码与此相关,问题是该应用程序的用户遇到了此错误,我无法在我这方面复制此问题,因为它对我和其他一些人都非常有效,因此我不确定是什么原因导致此特定用户出现此问题。这似乎是在我使用HikariCP创建SQLite连接时发生的

jar是使用Maven创建的,相关依赖项包括:

<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>2.4.1</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.13</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.13</version>
</dependency>

com.zaxxer
希卡里普
2.4.1
编译
org.slf4j
slf4j api
1.7.13
org.slf4j
slf4j简单
1.7.13
来自SLF4J:

请注意,启用库的SLF4J意味着只添加一个强制依赖项,即SLF4J-api.jar。如果在类路径上未找到绑定,则SLF4J将默认为无操作实现

我假设因为两个类都有相同的名称(StaticLoggerBinder),所以api版本首先被着色


要解决此问题,请尝试将
slf4j simple
依赖项置于
slf4j api
依赖项之上。

您能在
AbstractHikariConfig.java
第43行发布内容吗?但这看起来像是
slf4j
?@Tunaki的一个bug,这是它的一部分。这可能是slf4j的一个bug,我带着一个问题来到这里,因为我不明白为什么在大约12-13个用户中只有一个遇到了这个问题,这就是为什么我想知道是什么导致了这个问题。我在这里没有看到任何AbstractHikaryConfig。@Tunaki抱歉,这是它的源代码的正确链接,您应该始终在pom.xml中使用固定版本。不同的用户最终可能会得到该依赖关系的不同版本(如果他们自己构建应用程序或在自己的项目中使用它们)。此外,在slf4j 1.7.13中,StaticLoggerBinder不再位于api JAR中,因此如果使用该版本,该错误应该会消失。您正在着色吗?如果是这样,您能否反编译并查看哪个
StaticLoggerBinder
被着色?如果没有,你能发布你的类路径吗?刚刚选中,似乎是
slf4j simple
StaticLoggerBinder
。在这种情况下,我不确定会出什么问题。希望其他人能帮助你