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に関するエラーがあり、ライブラリを追加するとこのメッセージが表示されます.

サーバー: グラスフィッシュ V3 IDE: NETBEANS 6.9.1 Java EE 6

ありがとう:D

andyb answer の 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

は 167 行目で何かをログに記録しようとしているように見えWeldDeployerますが、依存しているログ ライブラリがありません。表示されているエラー - java.lang.NoClassDefFoundError- は、クラスが欠落していることを伝える Java ランタイムです。

欠落しているクラスは と呼ばれorg.apache.log.Loggerます。このクラスを含む .jar を見つけて、それをプロジェクトの依存関係として追加する必要があります。←これはやめてください -org.apache.log.logger引退しました!

Maven を使用していないと思います。それ以外の場合は、依存関係が自動的に追加されることを願っています。ただし、Twitter4j POM ファイルjunitを確認すると、 、slf4j-apicommons-logging-apiおよびの4 つの依存関係がありlog4jます。

編集:プロジェクトのビルドに 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 に答える