【发布时间】:2014-01-09 13:00:39
【问题描述】:
当我的代码执行这一行时:
DefaultHttpClient httpclient = new DefaultHttpClient();
我遇到了这个异常:
org.apache.commons.logging.LogConfigurationException:类 org.apache.commons.logging.impl.Log4JLogger 未实现 Log
有人知道我该如何解决吗? 也许不重要(或者也许不重要),但该应用程序是 Jira 的插件,并且使用 Maven 作为依赖项。
谢谢!
编辑:
编辑 2:
这可能与 Jira 的 OSGi 有关吗?
如何在 OSGi 环境中使用公共日志记录?
从这里:
http://wiki.apache.org/commons/Logging/FrequentlyAskedQuestions
Commons-logging 在设计时并未考虑到 OSGi。这就是为什么 难以在 OSGi 环境中使用公共日志记录:
LogFactory 按名称加载日志实现(参见 类.forName(字符串))。这在 OSGi 中通常是不可能的,因为 每个包类加载器只能看到包定义的类 为进口。加载 commons-logging 的包类加载器 捆绑包将无权访问用户提供的 commons-logging.properties 文件。 commons-logging-api.jar 包含 commons-logging.jar 中也包含的类。这是 与传统的 OSGi 应用程序架构相反,其中一个 bundle 定义了一个 API,其他 bundle 提供了实现 那个API。在 OSGi 中直接使用公共日志记录的替代方法 是:
包含正确 OSGi 元数据的重新捆绑版本可用 来自 Apache Felix、SpringSource 和 Eclipse Orbit。使用 Pax 日志记录。 有关此主题的更多信息可在以下档案中找到 the commons dev ML 和 the felix dev ML and in Jira。
当我尝试从 Jira 访问 OSGi 选项卡时(转到 JIRASERVER/plugins/servlet/upm/osgi#osgi),我可以看到一个异常:
classNotFoundException: org.apache.commons。 logging.impl.SLF4JLogFactory
我还可以从 IDE(搜索 Log4JLogger 类时)看到我有两个定义:
package org.apache.commons.logging.impl.Log4JLogger
public class Log4JLogger implements Log, Serializable {
和
package com.atlassian.extras.common.log;
class Log4jLogger implements com.atlassian.extras.common.log.Logger.Log {
这真是令人困惑....
【问题讨论】:
-
请发布完整的堆栈跟踪。
-
@SotiriosDelimanolis 我已经用 Stack Trace 添加了一张图片,希望对您有所帮助(如果您看到的图片太小,请右键单击并在新选项卡中打开)
标签: java maven jira-plugin apache-commons-httpclient