Невозможно добавить jsch-0.1.55.jar в существующий Java-проект Eclipse

Я скачал jsch-0.1.55.jar с https://sourceforge.net/projects/jsch/files/jsch.jar/0.1.55/jsch-0.1.55.jar/download, скопировал файл JAR в мой каталог lib, на котором работает версия Eclipse: 2023-12 (4.30.0) в Windows. Я попытался добавить JAR в Eclipse, используя Project Explorer-> Щелкните правой кнопкой мыши по проекту-> Путь сборки-> Настроить путь сборки-> Путь сборки Java-> Вкладка «Библиотеки»-> Путь к модулю-> Добавить JAR...-> перешел в папку lib, в которую я скопировал файл JAR, но теперь он отображается, дважды проверил его в папке lib через проводник Windows, и это так. Попробовал добавить его через Modulepath-> «Добавить внешние JAR-файлы...», который он добавляет, но никогда не отображается в Project Explorer в папке lib, хотя он отображается в ссылочных библиотеках, но когда я пытаюсь выполнить импорт внутри класс, который мне нужен, «импортировать com.jcraft.jsch.*;», я получаю сообщение об ошибке: «Пакет com.jcraft.jsch недоступен». Я попытался добавить его в файл mod-info.java «требуется com.jcraft.jsch;», но получил ошибку: «com.jcraft.jsch не может быть преобразован в модуль».

Буду признателен за любую помощь, и нет, я не использую maven в этом проекте.

Собирались ли вы использовать модули Java в своем проекте?

nitind 07.03.2024 00:53
jsch-0.1.55.jar не имеет ни module-info.class, ни Automatic-Module-Name, что означает, что имя модуля будет получено из имени файла JAR, а requires com.jcraft.jsch; неверно. Рассмотрите возможность просто удалить файл module-info.java (при необходимости вы можете воссоздать его позже, щелкнув правой кнопкой мыши проект и выбрав «Настроить»).
howlger 07.03.2024 11:08

@howlger Основываясь на вашем комментарии, я смог узнать, как добавить его, используя имя файла, которое мне требуется в модуле-info.java, т. е. «требуется jsch;» Если вы ответите на вопрос этим решением, я отмечу его как ответивший. Спасибо!

livlif2fullest 07.03.2024 16:16

@nitind Мне нужен файл mod-info.java, чтобы он компилировался, я новичок в Java, поэтому не знаю, зачем все и где нужно, но это то, что шаблон создал для меня в Eclipse.

livlif2fullest 07.03.2024 16:21

Смотрите мой ответ ниже. В диалоговом окне «Новый проект Java» есть возможность создать файл module-info.java, который включен по умолчанию. module-info.java требуется при использовании jlink. Но есть случаи использования, когда вы хотите запускать и останавливать модули во время выполнения, что не поддерживается JPMS в отличие, например, от ОСГи. В большинстве случаев вы можете выбрать, хотите ли вы инкапсуляцию, которая требует немного больше работы для поддержания module-info.java. Короче говоря, module-info.java не является обязательным.

howlger 07.03.2024 16:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
5
257
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В jsch-0.1.55.jar нет ни module-info.class, ни Automatic-Module-Name в META-INF/MANIFEST.MF. Таким образом, имя модуля будет получено из имени файла JAR.

В вашем файле module-info.java замените

requires com.jcraft.jsch;

с

requires jcraft;

Кроме того, вы можете удалить свой файл module-info.java (при необходимости вы можете воссоздать его позже, щелкнув проект правой кнопкой мыши и выбрав «Настроить»).

Когда я пытаюсь удалить модуль-info.java и пытаюсь запустить его в режиме отладки, я получаю следующую ошибку: Error: Could not find or load main class main.mainGUI Caused by: java.lang.NoClassDefFoundError: org/apache/commons/net/telnet/TelnetNotificationHandler В моей конфигурации отладки у меня правильно установлен основной класс, если я использую кнопку «Поиск», это позволяет мне найти его через графический интерфейс, так что я предполагаю, что это правильно?

livlif2fullest 08.03.2024 18:20

Помогает ли в разделе «Выполнить» > «Конфигурации запуска...» удаление конфигурации запуска/отладки и повторная попытка? Может возникнуть проблема, связанная с тем, что Eclipse неправильно обновляет конфигурацию запуска после удаления файла module-info.java.

howlger 09.03.2024 08:06

да, после удаления конфигураций запуска оно теперь скомпилируется, однако, когда я запускаю свое приложение, я получаю сообщение об ошибке «Исключение в потоке «AWT-EventQueue-0» java.lang.NoClassDefFoundError: com/jcraft/jsch/JSchException ", ты знаешь, как это решить? Поскольку я бы предпочел не иметь файл mod-info.java.

livlif2fullest 19.03.2024 18:42

неважно. Я изменил конфигурацию запуска для JAR с пути к моему модулю на путь к классам, и теперь он работает.

livlif2fullest 19.03.2024 18:55

Я рад, что теперь это работает. Лучше сделайте это («JAR из пути моего модуля в путь к классу») в «Проект» > «Свойства: Путь сборки Java», вкладка «Библиотеки», а не для каждой конфигурации запуска.

howlger 20.03.2024 08:51

Другие вопросы по теме