使用的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