복붙노트

[SPRING] Java 9 : java.lang.ClassNotFoundException : Spring Boot 응용 프로그램의 java.sql.SQLException

SPRING

Java 9 : java.lang.ClassNotFoundException : Spring Boot 응용 프로그램의 java.sql.SQLException

자바 9로 스프링 부트 애플리케이션을 만들었습니다. ...     sourceCompatibility = 9     targetCompatibility = 9 ... 다음과 같이 시작했다 : java --module-path lib -m my.app. ...

    Caused by: java.lang.NoClassDefFoundError: java/sql/SQLException
        at spring.beans@5.0.2.RELEASE/org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:161)
        at spring.boot@2.0.0.M7/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 대신 classpath를 사용하여 응용 프로그램을 성공적으로 시작했습니다.

편집 : 조언 해 주셔서 감사합니다! 마지막으로 응용 프로그램을 시작하기위한 "마법 믹스"를 발견했습니다. 내가 lib에서 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

해결법

    from https://stackoverflow.com/questions/47852809/java-9-java-lang-classnotfoundexception-java-sql-sqlexception-in-spring-boot-a by cc-by-sa and MIT license