在使用Glassfish 5服务器和JPA的Netbeans中,类名错误或未将类路径设置为ERROR

时间:2019-04-18 21:20:45

标签: jpa java-ee netbeans glassfish server-error

我在Netbeans 11(安装了JDK 8)中有一个Web应用程序,我添加了mysql-connector-java-8.0.15.jar的依赖项,并且已经从数据库中生成了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();

出于完整性考虑,我在编译阶段没有错误!

有人知道如何解决吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

经过研究,我以这种方式解决了这个问题:

  1. similar problem得到启发,我按照devmindthis之后的建议在Glassfish管理控制台中创建了连接池和资源。

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

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

一切都按预期进行!

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

编辑:,用于最新版本的mysql-connector,如devmind建议您将MysqlDataSource:从com.mysql.jdbc.jdbc2.optional.MysqlDataSource设置为com.mysql.cj.jdbc.MysqlDataSource,如报告{{3 }}。

我希望它对其他人有用。