Twitter4J Стеклянная рыбка v3

я пытаюсь сделать веб-приложение, которое подключается к твиттеру. Я пытаюсь получить информацию из общедоступного твиттера, и я использую библиотеку 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 в веб-приложение -> ошибка требует что-то регистрировать, и я добавляю библиотеку регистратора - затем после этого возникает ошибка об org.apache.avalon, и после добавления библиотеки отображается это сообщение .

СЕРВЕР: GLASSFISH V3 IDE: NETBEANS 6.9.1 JAVA EE 6

Спасибо :D

уже включить org.apache.log.logger из ответа andyb, но это вызовет другую ошибку

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)

я уже добавил org.apache.log.logger из этой банки http://www.findjar.com/jar/logkit/logkit/2.0/logkit-2.0.jar.html

это правильный?

Я получаю больше ошибок, когда добавляю банку, на самом деле, как правильно добавить twitter4j в Glassfish v3? мне нужно добавить тот POM.xml, который дал andyb?


person edric_s    schedule 04.04.2011    source источник


Ответы (1)


Похоже, что WeldDeployer пытается записать что-то в строку 167, но библиотека ведения журнала, от которой он зависит, отсутствует. Ошибка, которую вы видите — java.lang.NoClassDefFoundError — это среда выполнения Java, сообщающая вам, что отсутствует класс.

Отсутствующий класс называется org.apache.log.Logger. Вам нужно найти файл .jar, содержащий этот класс, и добавить его в качестве зависимости вашего проекта. Не делайте этого — org.apache.log.logger устарел!

Я предполагаю, что вы не используете Maven, иначе я надеюсь, что зависимости будут добавлены автоматически. Однако, если вы проверите Twitter4j POM file есть 4 зависимости: junit, slf4j-api, commons-logging-api и log4j.

Редактировать: я не был уверен, что вы используете Maven для создания своего проекта. Если да, то как вы добавили twitter4j в свой проект? Вы добавили следующее в свой проект POM? Если это так, то Maven должен был загрузить зависимости автоматически. На сайте Twitter4j есть инструкции по добавлению библиотеки в POM.

<dependency>
    <groupId>org.twitter4j</groupId>
    <artifactId>twitter4j-core</artifactId>
    <version>2.2.1</version>
</dependency>
person andyb    schedule 04.04.2011
comment
спасибо за ответ, однако я все еще получаю еще одну ошибку после того, как нашел org.apache.log.logger - person edric_s; 04.04.2011
comment
Какую библиотеку журналов вы добавили? Похоже, вы добавили старую библиотеку журналов. Apache Avalon был заменен Excalibur (и некоторыми другими проектами) несколько лет назад. Даже Excalibur теперь закрыт! Вы пытались добавить log4j? Из вашего вопроса неясно, какую библиотеку ведения журнала вы добавили. - person andyb; 04.04.2011
comment
ой, я не закончил редактировать свой комментарий. ^^ извините. я обновил статус в моем вопросе выше. я использую org.apache.log4j_1.2.13.v200806030600.jar - person edric_s; 04.04.2011
comment
commons-io-1.4.jar junit 4.5 - junit-4.5 jar twitter-4j-core-2.2.1-sources.jar org.apache.commons.loggin_1.04v20080605-1930.jar org.apache.log4j_1.2.13.v20080603600. jar avalon.jar logkit-2.0 jar — это библиотеки, которые я уже добавил. - person edric_s; 04.04.2011
comment
org.apache.log.logger из здесь очень старый. Я ожидаю, что WeldDeployer в Glassfish совместим с log4j. Можете ли вы попробовать удалить avalon.jar и logkit2.0.jar (они оба старые) и просто использовать 4 библиотеки из раздела <dependencies> в POM twitter4j, ссылка на который приведена в моем ответе выше? - person andyb; 04.04.2011
comment
что мне делать с POM-файлом? мне просто нужно скопировать и вставить его в мой существующий файл pom? или мне нужно снова добавить одну за другой библиотеку? и куда я должен поместить внутреннюю часть файла pom? в мою папку Glassfish или мой проект? извините, что задаю много вопросов :(. я все еще новичок в этом деле. - person edric_s; 05.04.2011
comment
Я обновил свой ответ, указав правильную зависимость для добавления в ваш POM. - person andyb; 05.04.2011
comment
Я использую Glassfishv3, это maven? я не знаю, что такое maven :( я просто добавляю jar-файл twitter4j, щелкнув правой кнопкой мыши, и добавляю jar. и зависимость кода от pom, где я должен его поместить? в POM.xml папки Glassfish v3 или папки моего проекта? потому что когда я искал, в папке Glassfish и папке проекта есть pom.xml - person edric_s; 05.04.2011
comment
Извините, я не использую Glassfish, поэтому не знаю, что на это ответить. Однако Glassfish не Maven. Maven — это инструмент для создания и управления проектом на основе Java. Похоже, вы добавили файл twitter4j.jar без его зависимостей. Пожалуйста, попробуйте добавить блок <dependency> в моем ответе выше к блоку pom.xml в папке вашего проекта. - person andyb; 05.04.2011
comment
хм, на самом деле pom.xml отсутствует в моем проекте. pom.xml находится внутри twitter4j 2.2.1.zip, однако я добавляю библиотеку только из этого zip-файла twitter4j2.2.1-core.jar, в котором нет pom.xml. Итак, куда мне поместить POM.xml и где я поместил блок зависимостей? просто добавить в конец корневого узла? или все еще внутри корневого узла? - person edric_s; 07.04.2011
comment
О, так вы не используете Maven! Не изменяйте POM twitter4j. Теперь вы можете игнорировать все приведенные выше советы POM, поскольку вы не используете Maven. Проблема в отсутствующих зависимостях для twitter4j. Эти зависимости: slf4j, commons-logging и log4j. Я предлагаю вам вручную загрузить эти библиотеки и добавить их в свой проект Glassfish. - person andyb; 07.04.2011