Я создал приложение Spring Boot с Java 9 ... sourceCompatibility = 9 targetCompatibility = 9 ... и запустил его с помощью: java --module-path lib -m my.app. ...
Caused by: java.lang.NoClassDefFoundError: java/sql/SQLException
at [email protected]/org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:161)
at [email protected]/org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:436)
... 5 more
Caused by: java.lang.ClassNotFoundException: java.sql.SQLException
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
... 7 more
Примечание: я успешно запустил приложение, используя путь к классам вместо --module-path
Изменить: Спасибо за ваши советы! Наконец, я нашел «волшебную смесь» для запуска приложения. Я изменил командную строку, удалил javax.transaction-api-1.2.jar из библиотеки и поместил его в путь к классам, чтобы удалить пакет (javax.transaction.xa), разделив конфликт между модулями java.sql и javax.transaction.api
java --module-path lib --add-modules java.sql,java.instrument,java.xml.bind -cp javax.transaction-api-1.2.jar -m my.app
requires java.sql
, поэтому модуль java.sql не входит в набор модулей, которые разрешены как запуск (запустите с --show-module-resolution, чтобы проверить это). Это сложная область с автоматическими модулями, иногда вам нужно использовать--add-modules
, чтобы принудительно разрешить дополнительные явные модули. В этом случае вам понадобится--add-modules java.sql
, поскольку он не требуется ни одному модулю, и поэтому он не будет разрешен. - person Alan Bateman   schedule 17.12.2017--add-modules java.sql
должно помочь. Как я уже сказал, полные команды пока не видны в вопросе. Было бы хорошо увидеть, что работает, а что нет с точки зрения команд. - person Naman   schedule 17.12.2017--add-modules
перед опцией-m
или--module
). - person Alan Bateman   schedule 17.12.2017jdeps
для файла JAR spring.boot, это поможет вам определить модули, которые требуются spring.boot. В качестве альтернативы используйте--add-modules java.se
. Что касается javax.transaction-api-1.2.jar, то сейчас находится обслуживающий выпуск JSR 907, в котором предлагается удалить пакет javax.transaction.xa. Java SE предоставляет пакет xa, начиная с Java SE / JDK 1.4, поэтому немногие заметят, если версия JTA для Java EE откажется от него. - person Alan Bateman   schedule 18.12.2017