java.base отсутствует при попытке jlink

#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 что модуль неявно добавляется во все модули.