遇到“此代码应该从未进入jar”错误

时间:2016-01-09 21:58:42

标签: 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.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) ~[?:?]

我没有包含任何代码,因为我不确定哪些代码与此相关,问题是该错误是由应用程序的用户遇到的,我无法在我的末尾复制问题因为它对我和其他一些人来说非常有效,因此我不确定这个特定用户可能会导致什么。当我使用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>

1 个答案:

答案 0 :(得分:0)

来自SLF4J website

  

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

我假设因为两个类具有相同的名称(StaticLoggerBinder),所以api版本首先加阴影。

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