#java #macos #java-9 #jlink
#java #macos #java-9 #jlink
Вопрос:
Я получаю это Error: Module java.base not found
при попытке использовать jlink.
Это 2 вещи, которые я пробовал до сих пор
/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/bin/jlink --module-path "%JAVA_HOME%jmods":mods --add-modules com.tutorialspoint.greetings,java.base --output customjre
Error: Module java.base not found
/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/bin/jlink --module-path "%JAVA_HOME%jmods":mods --add-modules com.tutorialspoint.greetings,java.base@9.0.4 --output customjre
Error: Module java.base@9.0.4 not found
Мой модуль содержит это.
module com.tutorialspoint.greetings {
requires java.base;
}
Я точно следовал этому руководству по созданию модулей, за исключением того, что я добавил требуемый java.basic.
https://www.tutorialspoint.com/java9/java9_module_system.htm
Я попробовал это без необходимости java.base и все равно получаю ту же проблему. Есть идеи? Я новичок в JLink и Java9 и хотел попробовать, поскольку в java8 нет Jlink.
Может быть, это то, как я ссылаюсь на JLink в самом каталоге?
Комментарии:
1. попробуйте использовать абсолютный путь к jmods JDK по умолчанию вместо
%JAVA_HOME%jmods
пути к вашему модулю с первой командой. Кстати, вам действительно не нужно явно указыватьrequires java.base;
директиву.2. Спасибо @Naman, я не думал о неправильном пути JAVA_HOME. Да, я пробовал это с и без requires java.base, но безуспешно. Позвольте мне попробовать это изменение JAVA_HOME.
3. @Naman /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/bin/jlink —путь к модулю «/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Homejmod»:mods —add-modules com.tutorialspoint.greetings —вывод пользовательского файлаОшибка: модуль java.base не найден, требуемый com.tutorialspoint.greetings По-прежнему безуспешно. Обратите внимание, что я также изменил jmods на jmod, поскольку кажется, что это так и называется.
4. Интересно, что ошибка немного изменилась. Теперь там написано «требуется com.tutorialspoint.greetings»
5. Я очень уверен, что синтаксис Windows
%JAVA_HOME%
не работает на macOS. В зависимости от оболочки это будет что-то вроде${JAVA_HOME}
. Кроме того, не используйте обратную косую черту в качестве разделителя, как вjmods
.
Ответ №1:
Проблема связана с тем, что путь к модулю плохо определен.
Если вы используете macos, правильный синтаксис:
jlink --module-path "mods:$JAVA_HOME/jmods" --add-modules com.tutorialspoint.greetings --output customjre
Перед запуском убедитесь, что JAVA_HOME
переменная установлена jlink
.
Кроме того, нет необходимости определять предложение require с java.base
модулем в вашем модуле, потому java.base
что модуль неявно добавляется во все модули.