0

我正在尝试制作连接到 Twitter 的 Web 应用程序。我试图从公共时间线 twitter 获取信息,我使用 twitter4j 库。

在执行 java 代码来检索信息时,它很好并且可以工作。但是,当我将该方法调用到 jsp 时,它会显示这一点。

SEVERE: Exception while loading the app
org.glassfish.deployment.common.DeploymentException: java.lang.NoClassDefFoundError: Lorg/apache/log/Logger;
        at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:167)
        at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:125)
        at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:224)
        at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:338)
        at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183)
...

任何人都可以帮助我为什么会收到此错误?我在谷歌上搜索它,但似乎找不到正确的解决方案:(。我的项目中没有发现错误。

我在添加 twitter4j 之前所做的: - 将 twitter4j 库添加到 Web 应用程序 -> 错误需要记录器,然后我添加了记录器库 - 然后出现关于 org.apache.avalon 的错误,在我添加库之后它显示此消息.

服务器:GLASSFISH V3 IDE:NETBEANS 6.9.1 JAVA EE 6

谢谢 :D

已经包含来自 andyb 答案的 org.apache.log.logger 但它会导致另一个错误

SEVERE: Exception while loading the app
org.glassfish.deployment.common.DeploymentException: java.lang.NoClassDefFoundError: com/sun/jdmk/comm/CommunicatorServer
        at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:167)
        at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:125)
        at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:224)
        at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:338)
        at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183)
        at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305)

我已经从这个 jar 中添加了 org.apache.log.logger http://www.findjar.com/jar/logkit/logkit/2.0/logkit-2.0.jar.html

那是正确的吗?

当我添加 jar 时出现更多错误,实际上将 twitter4j 添加到 glassfish v3 的正确方法是什么?我需要添加 andyb 提供的 POM.xml 吗?

4

1 回答 1

0

看起来WeldDeployer正在尝试在第 167 行记录某些内容,但它所依赖的日志库丢失了。您看到的错误 - java.lang.NoClassDefFoundError- 是 Java 运行时告诉您它缺少一个类。

缺少的类称为org.apache.log.Logger。您需要找到包含此类的 .jar 并将其添加为项目的依赖项。← 不要这样做 -org.apache.log.logger已经退休了!

我猜你没有使用 Maven,否则我希望自动添加依赖项。但是,如果您检查Twitter4j POM 文件,则有 4 个依赖项:junitslf4j-api和.commons-logging-apilog4j

编辑:我不确定您是否使用 Maven 来构建您的项目。如果是,那么您是如何将 twitter4j 添加到您的项目中的?您是否将以下内容添加到您的项目POM 中?如果是这样,那么依赖项应该已由 Maven 自动下载。Twitter4j站点有关于如何将库添加到 POM 的说明。

<dependency>
    <groupId>org.twitter4j</groupId>
    <artifactId>twitter4j-core</artifactId>
    <version>2.2.1</version>
</dependency>
于 2011-04-04T06:01:29.330 回答