Class 使用 Glassfish 5 服务器和 JPA 的 Netbeans 中的名称错误或类路径未设置错误
Class name is wrong or classpath is not set ERROR in Netbeans with Glassfish 5 server and JPAs
我在 Netbeans 11 中有一个 Web 应用程序(安装了 JDK 8),我添加了 mysql-connector-java-8.0.[=28= 的依赖项] 并且我已经从我的数据库中生成了 JPA。
构建时没有错误。
但是当我尝试 运行 它时,Glassfish 服务器给我这些 errors (pastebin link)。
这是我的persistence.xml,我相应设置的是:
<?xml version="1.0" encoding="UTF-8"?>
<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="InvoicesPU" transaction-type="JTA">
<jta-data-source>java:app/Invoices</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties/>
</persistence-unit>
</persistence>
在我的 java class 中,我称它为:
@Stateless
public class InvoiceEJB implements InvoiceEJBLocal {
@PersistenceContext(unitName = "InvoicesPU")
EntityManager em;
...
em.someMethod();
为了完整性,我在编译阶段没有报错!
有人知道怎么解决吗?
尝试将您的 JDBC 驱动程序 jar 放入 Glassfish 域的 lib
文件夹。我通常将它们存储在 lib/ext
.
经过一番研究我是这样解决的:
从 similar problem, I created the Connection Pool and the Resource in the Glassfish Admin Console as suggested by devmind following this.
中汲取灵感
我删除了 mysql-connector-java-8.x.x.jar
的依赖项并添加了 mysql-connector-java-5.x.x.jar
在the persistence.xml
中我设置了标签的JNDI名称jta-data-source
一切如期而至!
我不知道如何使用最新版本的 MySQL 连接器使一切正常工作,但至少,我的 Web 应用程序以这种方式工作。
编辑: 最新版本的 mysql-连接器,如 devmind has suggest you should set MysqlDataSource: from com.mysql.jdbc.jdbc2.optional.MysqlDataSource
to com.mysql.cj.jdbc.MysqlDataSource
as reported here.
希望对其他人有用。
我在 Netbeans 11 中有一个 Web 应用程序(安装了 JDK 8),我添加了 mysql-connector-java-8.0.[=28= 的依赖项] 并且我已经从我的数据库中生成了 JPA。
构建时没有错误。
但是当我尝试 运行 它时,Glassfish 服务器给我这些 errors (pastebin link)。
这是我的persistence.xml,我相应设置的是:
<?xml version="1.0" encoding="UTF-8"?>
<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="InvoicesPU" transaction-type="JTA">
<jta-data-source>java:app/Invoices</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties/>
</persistence-unit>
</persistence>
在我的 java class 中,我称它为:
@Stateless
public class InvoiceEJB implements InvoiceEJBLocal {
@PersistenceContext(unitName = "InvoicesPU")
EntityManager em;
...
em.someMethod();
为了完整性,我在编译阶段没有报错!
有人知道怎么解决吗?
尝试将您的 JDBC 驱动程序 jar 放入 Glassfish 域的 lib
文件夹。我通常将它们存储在 lib/ext
.
经过一番研究我是这样解决的:
从 similar problem, I created the Connection Pool and the Resource in the Glassfish Admin Console as suggested by devmind following this.
中汲取灵感
我删除了
mysql-connector-java-8.x.x.jar
的依赖项并添加了mysql-connector-java-5.x.x.jar
在
the persistence.xml
中我设置了标签的JNDI名称jta-data-source
一切如期而至!
我不知道如何使用最新版本的 MySQL 连接器使一切正常工作,但至少,我的 Web 应用程序以这种方式工作。
编辑: 最新版本的 mysql-连接器,如 devmind has suggest you should set MysqlDataSource: from com.mysql.jdbc.jdbc2.optional.MysqlDataSource
to com.mysql.cj.jdbc.MysqlDataSource
as reported here.
希望对其他人有用。