Поэтому я сталкивался с этими проблемами во многих проектах на основе 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, пожалуйста, помогите.
Этот ответ описывает подход, а не конкретное решение.
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.