#java #maven #bots #telegram #noclassdeffounderror
#java #maven #боты #telegram #ошибка noclassdeffounderror
Вопрос:
здесь новый пользователь! Я знаю, что есть похожие вопросы с ответами на это, но я не знаю, как применить их к моему случаю, поэтому извините, если это повторяется!
Итак… Я пытаюсь создать своего первого бота для Telegram и решил использовать Java. Я следую этому руководству и скопировал код из двух примеров классов (EchoBot и Main). Единственное, что я изменил, это токен, который я получил от BotGodfather в Telegram. Я использую Eclipse в Ubuntu 18.04.1 в качестве IDE, поэтому я начал с создания проекта Java, а затем настроил его как проект Maven. Это код моего pom.xml : `
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>EchoBot</groupId>
<artifactId>EchoBot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>EchoBot</name>
<dependencies>
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
<version>3.6.1</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<release>10</release>
</configuration>
</plugin>
</plugins>
</build>
</project>
`
Когда я запускаю программу, я получаю эту ошибку:
Исключение в потоке «main» java.lang.Ошибка NoClassDefFoundError: com/ google/inject/Module в org.telegram.telegrambots.ApiContext.getInjector(ApiContext.java:46) в org.telegram.telegrambots.ApiContext.getInstance(ApiContext.java:25) в org.telegram.telegrambots.боты.TelegramLongPollingBot.(TelegramLongPollingBot.java:17) в pearlbot.EchoBot.(EchoBot.java:8) в pearlbot.Main.main(Main.java:17), вызванное: java.lang.Исключение ClassNotFoundException: com.google.inject.Модуль в java.base/jdk.internal.loader.Встроенный загрузчик.loadClass(встроенный загрузчик.java:583) в java.base/jdk.internal.loader.Загрузчики классов $AppClassLoader.loadClass(ClassLoaders.java:190) в java.base/java.lang.Загрузчик классов.loadClass(ClassLoader.java:499) … еще 5
В чем может быть проблема? Имейте в виду, что я даже не знаю, что такое Maven, поэтому, если это что-то связанное с ним, вам нужно будет объяснить, что не так, как если бы вы разговаривали с ребенком! ^^»
Комментарии:
1. запустите mvn clean install, он добавит необходимые jar-файлы в ваш classpath.
2. Возможно, у вас отсутствует зависимость в вашем pom. По большей части (но не исключительно) maven является инструментом управления зависимостями. Это гарантирует, что все, что вам нужно для библиотек, находится на вашем пути. По-видимому, в нем отсутствует библиотека.
3. Хорошо, это сработало! Спасибо! 😀
Ответ №1:
Я получил эту ошибку при попытке установить testng для eclipse версии: 2019-12 (4.14.0) и запустить программу, после чего я получил эту ошибку. Наконец-то я был исправлен —
Eclipse IDE для разработчиков Java, версия: 2019-12 (4.14.0), идентификатор сборки: 20191212-1212. TestNG 7.1.0.r202001120626
Удаление библиотеки TestNG из пути сборки проекта, содержащего тест, и установка TestNG из меню Справка / Установить новое программное обеспечение у меня не сработали, я продолжал получать эту ошибку.
Что сработало для меня, так это загрузка guice-4.2.2.jar (из https://github.com/google/guice/wiki/Guice422), копируя его в любую папку и добавляя его в путь сборки проекта как внешний JAR.
Из Eclipse перейдите в «Справка» > «Установить программное обеспечение» или вы также можете установить из market place (Справка> Market Place). После установки TestNG из market place это не сработало, но установка GUICE422.jar для меня путь сборки сработал, поэтому убедитесь, что после установки TestNG с market place установите файл Guice422 Jar, а также ссылку для установки testng с eclipse market place
У меня это сработало — Надеюсь, это поможет