导入org.slf4j.Logger失败 - 如何将jar包添加到类路径中?

5

我正在学习使用Maven和Log4J。在POM文件中,我已添加以下依赖项:

  <dependencies>
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
       <version>1.7.12</version>
     </dependency>
     <dependency>
       <groupId>log4j</groupId>
       <artifactId>log4j</artifactId>
       <version>1.2.17</version>
     </dependency>   
  </dependencies>

当我尝试在我的主类中导入import org.slf4j.Logger时,Eclipse显示“无法解析导入的org.slf4j”。我搜索了一段时间,似乎需要在这里下载分发文件http://www.slf4j.org/download.html并且“将jar添加到类路径”?我感到困惑:难道Maven不会自动下载吗?我该如何“将jar添加到类路径”?我是一个真正的初学者。非常感谢您的帮助!


右键单击您的项目文件夹->构建路径->配置构建路径->在库选项卡下单击(添加外部JAR)->应用 - hermit
@hermit,这不是在Maven项目中添加依赖项的方法,任何手动库配置都将在同步项目设置时被删除,当这些依赖项不在pom配置中时。 - Gimby
1
你运行了 mvn clean install 吗?在此之后,你发现本地Maven仓库下载了哪些JAR包?暂时先不考虑Eclipse。 - user1933888
4个回答

8

由于我遇到了非常相似的问题,因此我来写一下我的问题:

我从互联网上复制了一个错误的Maven依赖项(例如)。 它仅适用于测试范围...哦,亲爱的...

<scope>test</scope>

所以在删除 scope 测试部分后,测试开始按预期工作。:)


2
我打赌你是在 https://www.baeldung.com/logback 的示例中遇到了同样的问题,我也经历了相同的事情,并花费了相当长的时间来解决它。 - leoflower
谢谢。我找到了你的答案,而且我实际上有scope:test... 哦,亲爱的! 这是我能想到的最少的。 - Danny
同样的问题又出现了,与 <scope>test</scope> 有关,但这是在 Maven Central 上给出的方式。删除该行后,它就可以完美运行了! - user13963867

1
你说你是Maven的新手,并在POM中添加了依赖项。 现在我假设,你认为只要在中添加了某些内容,相关的jar包就会在构建时可用。
然而,Maven并不是这样工作的。它指向一个共同的存储库,你必须从中下载相关的jar包(当你执行mvn install时会发生这种情况)。
在你成功地运行了mvn install之后,你可以使用这个src来设置你的eclipse IDE,可以使用mvn eclipse:eclipse或者使用一个eclipse maven插件。
因此,在你添加依赖项之后,请从项目所在位置运行以下命令。
mvn clean install;

您的JAR包应该从Maven下载到本地目录,类似于:

C:\Users\user.m2\repository


2
他写道他不使用cmd,而是使用eclipse。 IDE应该能够识别它,如果项目被eclipse视为maven项目,则永远不应该执行mvn eclipse:eclipse。 - szefuf

0

你还需要依赖于 slf4j-api

另外,如果你使用的是Eclipse,可能需要尝试更新项目。


你说得没错,但是 slf4j-log4j12 依赖应该会自动添加缺失的 api 依赖。事实上,这并没有发生,这清楚地表明 pom 配置可能存在更多问题,而这些问题并未在此处显示出来。 - Gimby
@szefuf 谢谢。我已经更新了项目。我添加了<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.12</version> </dependency>但它仍然不起作用... - user3735871
你尝试过从终端构建项目吗?那么你是否遇到了错误? - szefuf
@szefuf 在引入log4j之前,这个项目还好。由于我无法导入org.slf4j.Logger并创建一个方法,我不确定如何从cmd测试它。 - user3735871
我不是log4j的专家,因为我不使用它,但我不确定你的pom.xml文件中是否应该有对log4j的依赖。尝试只使用slf4j-log4j12。如果我错了,希望有人能纠正我。 - szefuf

0

****** 对我有效。****

只需在依赖项下的pom.xml中添加以下依赖项即可。

 <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-jcl</artifactId>
    <version>1.7.5</version>
</dependency>     
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.5</version>
</dependency>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接