Glassfish 5服务器和JPAs的Netbeans中的类名错误或未设置类路径错误

Glassfish 5服务器和JPAs的Netbeans中的类名错误或未设置类路径错误,jpa,jakarta-ee,netbeans,glassfish,server-error,Jpa,Jakarta Ee,Netbeans,Glassfish,Server Error,我在netbeans11中有一个Web应用程序(安装了jdk8),我添加了mysql-connector-java-8.0.15.jar的依赖项,并从数据库生成了jpa 构建时没有错误 但是当我尝试运行它时,Glassfish服务器会给我这些 这是我相应设置的persistence.xml,它是: <?xml version="1.0" encoding="UTF-8"?> <persistence version="2.1&q

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

构建时没有错误

但是当我尝试运行它时,Glassfish服务器会给我这些

这是我相应设置的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>
为了完整性,我在编译阶段没有错误


有人知道怎么解决吗?

试着把JDBC驱动程序jar放到Glassfish域的
lib
文件夹中。我通常将它们存储在
lib/ext
中,经过一些研究后,我用这种方式解决了它:

  • 从一个示例中获得灵感,我在Glassfish管理控制台中创建了连接池和资源,如下所示

  • 我删除了作为依赖项的
    mysql-connector-java-8.x.x.jar
    ,并添加了
    mysql-connector-java-5.x.x.jar

  • persistence.xml
    中,我为标记
    jta数据源设置了JNDI名称

  • 一切如期而至

    我不知道如何使用最新版本的MySQL连接器使一切正常工作,但至少我的Web应用程序是这样工作的

    编辑:对于mysql connector的最新版本,正如所建议的那样,您应该将MysqlDataSource:from
    com.mysql.jdbc.jdbc2.optional.MysqlDataSource
    设置为所报告的
    com.mysql.cj.jdbc.MysqlDataSource


    我希望它对其他人有用。

    我检查过,在Glassfish域中已经有mysql连接器驱动程序了!我完成了这项工作,检查了服务窗口中有关glassfish和jdbc的所有内容,现在一切正常,但我不知道如何添加
    Datasource类名:com.mysql.cj.jdbc.MysqlConnectionPoolDataSource
    部分。我可以在哪里添加它???Ping是否适用于GF管理控制台中的连接池?创建连接池和JDBC资源。你可以参考。资源JNDI名称转到
    jta数据源
    标记:
    jdbc/tutorialsDS
    类名在版本8中已更改。将数据源类名从
    com.mysql.jdbc.jdbc2.optional.MysqlDataSource
    更改为
    com.mysql.cj.jdbc.MysqlDataSource
    。查看详细信息。
    @Stateless
    public class InvoiceEJB implements InvoiceEJBLocal {
    
        @PersistenceContext(unitName = "InvoicesPU")
        EntityManager em;
        ...
        em.someMethod();