Wildfly 21:可引导的罐子';找不到H2 JDBC驱动程序/数据源类

Wildfly 21:可引导的罐子';找不到H2 JDBC驱动程序/数据源类,jdbc,h2,bootable,wildfly-21,Jdbc,H2,Bootable,Wildfly 21,我正在Wildfly 21.0.1.Final上部署一个可引导JAR。JAR是用wildflyjarmaven插件构建的。以下是插件配置: <plugin> <groupId>org.wildfly.plugins</groupId> <artifactId>wildfly-jar-maven-plugin</artifactId> <configuration> <feature-pack-loc

我正在Wildfly 21.0.1.Final上部署一个可引导JAR。JAR是用wildflyjarmaven插件构建的。以下是插件配置:

<plugin>
  <groupId>org.wildfly.plugins</groupId>
  <artifactId>wildfly-jar-maven-plugin</artifactId>
  <configuration>
    <feature-pack-location>wildfly@maven(org.jboss.universe:community-universe)#21.0.0.Final
    </feature-pack-location>
    <layers>
       <layer>jaxrs-server</layer>
       <layer>management</layer>
       <layer>observability</layer>
       <layer>microprofile-openapi</layer>
       <layer>h2-driver</layer>
       <layer>h2-datasource</layer>
     </layers>
     <excluded-layers>
       <layer>deployment-scanner</layer>
     </excluded-layers>
   </configuration>
   ...
 </plugin>
显然找不到类org.h2.jdbcx.JdbcDataSource。但是,在可引导JAR中,我看到在modules目录中:

[![modules][1]][1]

因此,如上所示,modules目录包含一个名为“com.h2database.h2”的模块,下面是相关module.xml文件的内容:

<?xml version="1.0" encoding="UTF-8"?>
<module name="com.h2database.h2" xmlns="urn:jboss:module:1.5">
  <resources>
    <resource-root path="h2-1.4.197.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
    <module name="javax.servlet.api" optional="true"/>
  </dependencies>
</module>
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="customers" transaction-type="JTA">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
    <properties>
      <property name="wildfly.jpa.twophasebootstrap" value="false" />
      <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle12cDialect"/>
      <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
      <property name="hibernate.format_sql" value="true"/>
      <property name="hibernate.show_sql" value="true"/>
    </properties>
  </persistence-unit>
</persistence>       
以及persistence.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<module name="com.h2database.h2" xmlns="urn:jboss:module:1.5">
  <resources>
    <resource-root path="h2-1.4.197.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
    <module name="javax.servlet.api" optional="true"/>
  </dependencies>
</module>
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="customers" transaction-type="JTA">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
    <properties>
      <property name="wildfly.jpa.twophasebootstrap" value="false" />
      <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle12cDialect"/>
      <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
      <property name="hibernate.format_sql" value="true"/>
      <property name="hibernate.show_sql" value="true"/>
    </properties>
  </persistence-unit>
</persistence>       

org.hibernate.jpa.HibernatePersistenceProvider
java:jboss/datasources/examples
有人能在这里解释一下这个问题吗?因为我已经被困了几天了:-(

非常感谢

亲切问候,

西摩 [1]: [2] :

回答我自己的问题。 似乎可以简单地定义h2依赖项,如下所示:

  <dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
  </dependency>

com.h2数据库
氢
运行时
而不是:

  <dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>test</scope>
  </dependency>

com.h2数据库
氢
测试
解决了这个问题