Java 我可以在没有Commons-logging.jar的情况下使用Apache HTTPClient吗

Java 我可以在没有Commons-logging.jar的情况下使用Apache HTTPClient吗,java,apache-commons,apache-httpclient-4.x,Java,Apache Commons,Apache Httpclient 4.x,我正在尝试在我的项目中使用apachehttpclient。此处不需要此应用程序的任何日志记录。因此,我可以使用HTTPClient而不使用Commons logging.jar。否则,这将对我的分发包造成额外的不必要负担。您可以将slf4j与JCL桥接器一起使用。这将把JCL日志转发给slf4j。然后添加一个slf4j适配器,如log back或log4j,并对其进行正确配置 在使用maven时,不要忘记排除JCL依赖项 是的,你可以。正如Hannes所建议的-以下是我自己的HttpClien

我正在尝试在我的项目中使用
apachehttpclient
。此处不需要此应用程序的任何日志记录。因此,我可以使用
HTTPClient
而不使用
Commons logging.jar
。否则,这将对我的分发包造成额外的不必要负担。

您可以将slf4j与JCL桥接器一起使用。这将把JCL日志转发给slf4j。然后添加一个slf4j适配器,如log back或log4j,并对其进行正确配置

在使用maven时,不要忘记排除JCL依赖项


是的,你可以。正如Hannes所建议的-以下是我自己的HttpClient maven设置:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.3.1</version>
    <exclusions>
        <exclusion>
            <artifactId>commons-logging</artifactId>
            <groupId>commons-logging</groupId>
        </exclusion>
    </exclusions>
</dependency>
最后,您当然需要有一个有效的SLF4J配置-这是我的配置:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.5</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.0.11</version>
</dependency>

org.slf4j
slf4j api
1.7.5
回写
回归经典
1.0.11

希望这有帮助

不需要。布赖恩·罗奇:谢谢,这仅仅意味着,即使是应用程序也不需要日志功能。我们必须用分发包分发这个
Commons logging.jar
,对吗?正确;即使您不配置/不需要日志记录,http库仍在调用
Commons logging
中定义的方法。如果它不在那里,你很可能会得到一个运行时错误,因为他们在运行时声明它是必需的。谢谢Eugen。我不使用maven。那么,我可以使用上面的技巧吗?好吧,如果你不使用Maven,你需要手工做同样的事情-你只需要确保
commons logging
不在你的类路径中,并且上面的JAR是正确的。Maven只是让事情变得更简单-但是没有理由你不能手动做同样的事情。除了整个问题是关于不必在发行版中包含依赖项。。。您添加了三个。我对原始问题进行了另一次阅读-它询问是否可以在不使用commons logging jar的情况下使用客户端。我的建议确实添加了依赖项——当然——您需要在其中包含一些日志库——但不包括commons日志。由于没有公共日志记录,可以避免一些潜在问题。
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.5</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.0.11</version>
</dependency>