类名错误或未设置类路径在具有Glassfish 5服务器和JPA的Netbeans中为错误

nhn9ugyo  于 2022-11-29  发布在  其他
关注(0)|答案(3)|浏览(168)

我在Netbeans 11中有一个Web应用程序(安装了JDK 8),我添加了mysql-connector-java-8.0.15.jar的依赖项,并从我的DB生成了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类中,我用以下方式调用它:

@Stateless
public class InvoiceEJB implements InvoiceEJBLocal {

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

为了完整性,我在编译阶段没有错误!
有人知道怎么解决吗?

lnvxswe2

lnvxswe21#

经过一番研究,我用这种方法解决了这个问题

1.从similar problem中获得灵感,我在Glassfish管理控制台中按照this后面的devmind的建议创建了连接池和资源。
1.我删除了mysql-connector-java-8.x.x.jar作为依赖项,并添加了mysql-connector-java-5.x.x.jar
1.在the persistence.xml中,我为标记jta-data-source设置了JNDI名称
而且一切都如预期的那样!
我不知道如何让一切都与最新版本的MySQL连接器,但至少,在这种方式下,我的Web应用程序的工作。

**EDIT:**对于mysql-connector的最新版本,因为devmind建议您应该将MysqlDataSource:从com.mysql.jdbc.jdbc2.optional.MysqlDataSourcecom.mysql.cj.jdbc.MysqlDataSource,如报道的here

我希望它对其他人有用。

nqwrtyyt

nqwrtyyt2#

尝试将JDBC驱动程序jar放到Glassfish域的lib文件夹中。我通常将它们存储在lib/ext中。

j8yoct9x

j8yoct9x3#

我不记得我是否从其他帖子或Glassfish用户手册中得到了这些信息,但它为我解决了提到的问题,即:类别名称错误或类别路径未设定Glassfish 5或Payara服务器错误-我目前使用的是Payara Server 5.2022.3。将最新的连接器j加入您的服务器/your_domain;在我的例子中,它是domain 1,这是我'cd'到/bin之后的脚本:C:\Program Files\payara-web-5.2022.3\payara5\bin〉asadmin添加库--键入应用程序“C:\Program Files(x86)\MySQL\连接器J 8.0\mysql-connector-j-8.0.31.jar”,其中引用的字符串是我保存连接器J的路径。

相关问题