Java Gradle Отсутствующие библиотеки Модуль, который существует или был импортирован -> Задача: compileJava

Поэтому я сталкивался с этими проблемами во многих проектах на основе JavaFX Gradle в Intelli J Idea IDE. Это подтолкнуло меня к тому, что мне пришлось вручную загружать файлы библиотеки и делать их частью моих проектов в качестве обходного пути.

Проекты gradle, которые у меня есть, постоянно терпят неудачу, когда я запускаю > Task :compileJava в IDE, например, в этом конкретном случае, который заставил меня создать проблему, заключается в том, что я успешно импортировал сокет io lib из maven implementation 'io.socket:socket.io-client:2.0.1', мне удалось импортировать его и напишите для него небольшой пример кода, и я добавил

requires engine.io.client;
    requires socket.io.client;

в файле информации о модуле. Поэтому, когда пришло время запустить это, не сообщается, что

error: module not found: socket.io.client
    requires socket.io.client;
   error: module not found: engine.io.client
    requires engine.io.client;

Я пробовал JDK 13,16,17, чтобы увидеть, не упускаю ли я что-то, но не могу запустить, поэтому сейчас я заметил тенденцию в моем предыдущем проекте JavaFX, в котором мне удалось уйти.

Так что, если есть кто-нибудь, кто понимает, что не так с настройкой Gradle, пожалуйста, помогите.

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

Ответы 1

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

Этот ответ описывает подход, а не конкретное решение.

socket.io.client и engine.io.client не являются именами модулей.

socket.io-client библиотека не является модульной платформой Java (насколько я могу судить), поэтому это будет автоматический модуль.

Имя модуля будет получено из имени jar. Я не знаю точного перевода, так как в имени jar есть символы . и -, которые могут быть переназначены (или нет), чтобы сделать имя модуля действительным. Сначала попробуйте точное имя файла jar. В банке может быть только один модуль.

Помимо требования правильного имени, jar должен находиться на пути к модулю. Maven сделает это автоматически для автоматических модулей, а Gradle — нет. Я не эксперт по Gradle, поэтому не буду давать советов, как это сделать для Gradle.

Если вы используете правильное имя в module-info и убедитесь, что jar находится на пути к модулю, тогда он может работать или может быть несовместим с системой модулей Java способами, которые вам нелегко исправить (т. е. сломанный модуль должен быть исправлено сопровождающими модуля).

Вы можете задать вопрос специалисту по обслуживанию библиотеки, чтобы он создал module-info.java файлы для модулей и обновил свою документацию о том, как использовать свои библиотеки в среде модулей Java.

Если библиотека, которую вы пытаетесь использовать, несовместима с системой модулей Java при использовании в качестве модуля, вы можете попробовать сделать свой проект немодульным, удалив module-info.java из своего проекта и добавив соответствующие переключатели командной строки. Чтобы понять, как это сделать, обратитесь к документации по немодульным проектам на openjfx.io.

ну спасибо за это, это действительно помогло. Я отказался от Gradle для этого проекта или, может быть, в будущем, я перешел на использование maven и, похоже, идет лучше, чем в предыдущей ситуации. Причина, по которой я перешел с Gradle, заключается в том, что Gradle плохо документирован (не значит, что все плохо) для поиска или устранения ошибок, отсутствие примеров примеров было большой проблемой с Gradle.

kinsley kajiva 06.05.2022 12:30

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