Пример Keycloak с источником данных Mysql - Причина: java .lang.ClassNotFoundException: Не удалось загрузить запрошенный класс: com. mysql .cj.jdb c .Driver - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь освоить SPI Keycloak Custom User Storage с примером, приведенным по следующей ссылке https://github.com/keycloak/keycloak-quickstarts/tree/latest/user-storage-simple

Я использовал Hibernate для загрузки com. mysql .cj. jdb c .Driver для настройки источника данных в моем постоянстве. xml file

<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="keycloak-spi-v1" transaction-type="RESOURCE_LOCAL">
    <class>com.patrickhub.ch.keycloakspiv1.entity.User</class>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/keycloakspidb?useSSL=false&amp;allowPublicKeyRetrieval=true"/>
            <property name="javax.persistence.jdbc.user" value="username"/>
            <property name="javax.persistence.jdbc.password" value="password"/>
            <property name="javax.persistence.schema-generation.database.action" value="none"/>
            <property name="javax.persistence.schema-generation.scripts.action" value="none"/>
        </properties>
    </persistence-unit>
</persistence>

Я использовал класс entityManager EntityManagerFactory, чтобы получить EntityManager в качестве типа транзакции, равного RESOURCE_LOCAL.

private EntityManager entityManager = Persistence.createEntityManagerFactory("keycloak-spi-v1").createEntityManager()

Я также объявил java - sql -соединения и другие, как следует

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
<groupId>ch.patrickhub.com</groupId>
  <artifactId>keycloak-spi-v1</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>
  <description> </description>
<dependencies>
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.16</version>
      </dependency>
      <dependency>
         <groupId>org.keycloak</groupId>
         <artifactId>keycloak-core</artifactId>
         <version>8.0.1</version>
      </dependency>
      <dependency>
         <groupId>org.keycloak</groupId>
         <artifactId>keycloak-server-spi</artifactId>
         <version>8.0.1</version>
      </dependency>
      <dependency>
         <groupId>org.jboss.logging</groupId>
         <artifactId>jboss-logging</artifactId>
         <version>3.3.2.Final</version>
        </dependency>

        <dependency>
          <groupId>javax</groupId>
          <artifactId>javaee-api</artifactId>
          <version>8.0</version>
        </dependency>
 </dependencies>
<build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.0</version>
        <configuration>
          <release>11</release>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
        <version>3.2.0</version>
      </plugin>
    </build>
</project>

Когда я запускаю mvn clean package, все сборки находят, и мне даже удается развернуть в keycloak и создайте пользовательскую федерацию с моим флягой. Но когда я пытаюсь просмотреть всех пользователей, я получаю эту ошибку:

Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [com.mysql.cj.jdbc.Driver]
        at org.hibernate@5.3.13.Final//org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:134)
        at org.hibernate@5.3.13.Final//org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.loadDriverIfPossible(DriverManagerConnectionProviderImpl.java:163)
        at org.hibernate@5.3.13.Final//org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildCreator(DriverManagerConnectionProviderImpl.java:119)
        at org.hibernate@5.3.13.Final//org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildPool(DriverManagerConnectionProviderImpl.java:103)
        at org.hibernate@5.3.13.Final//org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:75)
        at org.hibernate@5.3.13.Final//org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:100)
        at org.hibernate@5.3.13.Final//org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:246)
        at org.hibernate@5.3.13.Final//org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
        at org.hibernate@5.3.13.Final//org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145)
        at org.hibernate@5.3.13.Final//org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66)
        at org.hibernate@5.3.13.Final//org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
        at org.hibernate@5.3.13.Final//org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:94)
        at org.hibernate@5.3.13.Final//org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
        ... 172 more
Caused by: java.lang.ClassNotFoundException: Could not load requested class : com.mysql.cj.jdbc.Driver
        at org.hibernate@5.3.13.Final//org.hibernate.boot.registry.classloading.internal.AggregatedClassLoader.findClass(AggregatedClassLoader.java:210)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:398)
        at org.hibernate@5.3.13.Final//org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:131)
        ... 184 more

Пожалуйста, кто-нибудь может помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...