首页 > 解决方案 > 使用 Glassfish 5 服务器和 JPA 的 Netbeans 中的类名错误或未设置类路径错误

问题描述

我在 Netbeans 11 中有一个 Web 应用程序(安装了 JDK 8),我添加了 mysql-connector-java-8.0.15.jar 的依赖项,并从我的数据库生成了 JPA。

构建时没有错误。

但是当我尝试运行它时,Glassfish 服务器给了我这些错误(pastebin 链接)

这是我的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 类中,我通过以下方式调用它:

@Stateless
public class InvoiceEJB implements InvoiceEJBLocal {

    @PersistenceContext(unitName = "InvoicesPU")
    EntityManager em;
    ...
    em.someMethod();

为了完整起见,我在编译阶段没有错误!

有谁知道如何解决它?

标签: jpajakarta-eenetbeansglassfishserver-error

解决方案


经过一番研究,我以这种方式解决了它:

  1. 类似问题中获得灵感,我按照devmind建议在 Glassfish 管理控制台中创建了连接池和资源。

  2. 我删除了依赖项mysql-connector-java-8.x.x.jar并添加了mysql-connector-java-5.x.x.jar

  3. the persistence.xml我为标签设置 JNDI 名称jta-data-source

一切都按预期进行!

我不知道如何使用最新版本的 MySQL 连接器使一切工作,但至少,我的 Web 应用程序以这种方式工作。

编辑:对于 mysql-connector 的最新版本,正如devmind建议的那样,您应该将 MysqlDataSource: fromcom.mysql.jdbc.jdbc2.optional.MysqlDataSource设置com.mysql.cj.jdbc.MysqlDataSource此处报告的。

我希望它对其他人有用。


推荐阅读