使用的IntelliJ IDEA(版本2017年2月1日)我在這我想包括slf4j
與slf4j-binding
一個Java/Maven項目內。如何包括SLF4J-簡單的神器JAR當構建從IntelliJ IDEA的
我知道StackOverflow是關於slf4j
及其缺少綁定的大量問題,但大多數都是指Eclipse。然而,我的問題發生在Intellij下。
在pom.xml
我列出<dependencies>
下:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
</dependency>
現在,當我讓的IntelliJ打造神器JAR和我然後運行命令行,我得到了(可怕的)錯誤的JAR:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
經過檢查,JARdoes確實不包含slf4j-simple
類(slf4j
類雖然存在)。我該如何解決這個問題,指示Intellij合併slf4j-simple作爲列表離子pom.xml
?
爲了完整起見,這裏完整的項目pom.xml
的IntelliJ使用:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>au.gov.acic.travelalert</groupId>
<artifactId>extract-data</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency> <dependency>
<!-- jsoup HTML parser library @ https://jsoup.org/ -->
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.3</version>
</dependency>
</dependencies>
</project>
最後一點:剛開始時,我成立了項目記錄甚至沒有工作的IDE內,儘管pom.xml
中有正確的條目。但不知何故,在爲slf4j-log4j12
額外添加(並隨後刪除)依賴項之後,IDE會挑選slf4j-simple
,但在寫出製品JAR時仍然不會將其捆綁在一起...
您使用的是maven命令?你的項目中是否有其他的依賴項,並且slf4j是唯一一個沒有在你的jar文件中結束的項目? – Michael
如果您正在用'maven'構建'.jar',IDE就無關緊要。你應該發佈'.pom'中的所有相關部分,因爲當你執行'mvn package'時不包括它' –
@Michael我自己沒有發佈maven命令 - 我讓Intellij使用* artefact - >建立*菜單。 – halloleo