Wildfly 21:可引导的罐子';找不到H2 JDBC驱动程序/数据源类
我正在Wildfly 21.0.1.Final上部署一个可引导JAR。JAR是用wildflyjarmaven插件构建的。以下是插件配置: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
<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数据库
氢
测试
解决了这个问题