0

尝试从 maven(maven surefire 插件)运行 junit 测试时,出现以下错误:

java.lang.NoSuchFieldError: NO_FORMAT

此错误似乎来自对我的 log4j 记录器的任何调用。因此,当我有一个带有 log4j 类变量的类时log,例如:

public class SomeClass {

    private Logger log = Logger.getLogger(SomeClass.class);

    ....
}

然后打电话给

log.info(String msg);

导致上述错误。我试图确保在运行 junit 测试时设置了基本配置,例如

@Before
public void setup() {
    BasicConfigurator.configure();
    someclass = new SomeClass();
}

但这并不能解决这个问题。删除所有log调用可以解决问题,但这不是一个很好的解决方案。

知道为什么会出现这个问题吗?非常感谢。

4

3 回答 3

0

我不确定这是否会有所帮助,但我会尝试检查您的类路径中是否有多个 Log4j 依赖项,即我将运行mvn dependency:tree并将其输出到一个临时文件,例如mvn dependency:tree > deps.txt并从那时起分析我的依赖项.

于 2013-06-24T03:28:58.607 回答
0

尝试升级/降级您的 log4j 依赖项。

于 2013-05-24T02:01:15.357 回答
0

对我来说,问题是我也激活了一个 arquillian 个人资料。确保您只激活正确的一个来运行 Maven 测试:-)

于 2014-03-25T09:07:42.220 回答