jTwitter, oAuth и Google App Engine. NoClassDefFoundError
Я пытаюсь использовать jTwitter для получения oauth-экземпляра в твиттере с моим ключом / секретом потребителя и токеном / секретом доступа. Это хорошо задокументировано в javadoc здесь. Я скачал signpost, signpost-jetty и библиотеку jtwitter, но после развертывания и запуска сервлета я получаю сообщение об ошибке java.lang.NoClassDefFoundError: winterwell/jtwitter/OAuthSignpostClient
Eclipse не жалуется на отсутствие класса, потому что он есть - я вижу это в самом файле JAR, который находится в моем проекте. Итак, я сказал, забудь, я попробую OAuthScribeClient вместо этого, но это породило ОЧЕНЬ ПОХОЖУЮ ОШИБКУ java.lang.NoClassDefFoundError: org/scribe/oauth/Token
Это смущает меня еще больше, потому что у меня есть следующий код в моем Java-файле, и он компилируется без ошибок или предупреждений:
import org.scribe.oauth.Token;
Token token = new Token("myaccesstokeninfo", "accesstokensecret");
Понятно, что мне не хватает чего-то очень фундаментального, но я абсолютно не понимаю, что это может быть. Благодарю.
3 ответа
Обычно "NoClassDefFoundError" происходит, когда вы забыли скопировать все jar-файлы в каталог "/war/WEB-INF/lib", поэтому эти библиотеки будут недоступны со стороны сервера.
Xo4yHaMope, вероятно, прав.
Если вы работаете с Eclipse, но работаете с использованием веб-контейнера, тогда ваш путь к классам во время выполнения может отличаться от пути к классам вашего проекта, что может вызвать эту ошибку.
Чтобы закончить, Бен Уинтерс ответит, что я на самом деле сделал и работал, добавив jar в папку libs в проекте.
см. также здесь об иерархии папок.
Когда вы делаете это, затмение обычно добавляет jar к зависимостям Android перед запуском приложения. Я понимаю, что добавление jar в путь сборки сделает классы доступными только во время сборки