【问题标题】:Play framework Twitter4J library播放框架 Twitter4J 库
【发布时间】:2011-10-25 14:23:39
【问题描述】:

我尝试在 Play! 中使用 Twitter4J 库!在 dependencies.yml 中使用以下依赖的框架:

require:
    - org.twitter4j -> twitter4j-core [2.2,)

在那之后,我让 Play!框架使用以下命令解决依赖关系:

play dependencies --sync

玩!框架告诉我一些依赖项已被驱逐:

slf4j-api 1.5.8 is overriden by slf4j-api 1.6.1

这是 slf4j-api 的更高版本,我尝试运行该应用程序:

play run

但不幸的是,我收到以下错误消息:

16:19:47,208 ERROR ~ Oops. Error in Logger !
java.lang.NoSuchMethodError: org.apache.log4j.Logger.trace(Ljava/lang/Object;)V
        at play.Logger.trace(Logger.java:200)
        at play.Play.init(Play.java:221)
        at play.server.Server.main(Server.java:158)

有没有人认识到这个问题/知道我可以如何解决或解决这个依赖问题?

谢谢!

【问题讨论】:

    标签: java playframework twitter4j


    【解决方案1】:

    我不太确定问题出在 slf4j 上。 Trace 方法已添加到 Log4J 1.2.12。很可能对您的项目的某些依赖是在类路径中添加旧的 Log4J,它比该版本更旧并且缺少 trace 方法。

    检查 lib 文件夹中的 jars,以及所有依赖项。

    【讨论】:

    • 戏剧!框架依赖于 log4j 版本 1.2.15。我试过强制1.2.15版本:- log4j 1.2.15: force: true玩!框架通知我 log4j 版本已被覆盖:log4j 1.2.9 is overriden by log4j 1.2.15 但在尝试运行应用程序时,我仍然收到有关“Logger.trace”方法的相同错误消息。
    • @Jan 检查谁在添加 1.2.9 依赖项,这是问题的根源,然后删除该模块或将其更新到较新的版本
    • 我发现依赖是由twitter4j-core 2.2.5设置的,见twitter4j-core-2.2.5.pom
    • 问题已解决:解决方案是强制使用 log4j 版本 1.2.15,就像我之前所做的一样,但我忘记使用 play clean 清除 /tmp 文件夹。谢谢,佩雷!
    【解决方案2】:

    一种解决方案可能是强制使用特定版本的必要库。对于您的情况,它看起来像:

    - slf4j-api 1.5.8:
        force: true
    

    【讨论】:

    • 不幸的是,这并没有解决问题,我仍然收到相同的错误消息。
    猜你喜欢
    • 2012-11-30
    • 2013-02-20
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多