java.lang.NoClassDefFoundError:javax / persistence / spi / PersistenceProvider

时间:2017-08-21 12:01:07

标签: java noclassdeffounderror persistence-provider

四天天前,每次尝试连接到我的数据库时,我都会收到此错误消息:

  

java.lang.NoClassDefFoundError:javax / persistence / spi / PersistenceProvider

我在一段时间后得到它,我正在处理我的应用程序的其他部分,不包括数据库访问,所以我真的不知道是什么原因造成了这个错误。 我在过去的四天里所做的就是尝试用Google搜索上面错误的不同组合...... 毕竟谷歌搜索后,我发现,虽然错误使它看起来像我有一个丢失的jar,但事实并非如此。 (我javax.persistence.jar中有javax.persistence-2.1.0-rc1.jarWebContent/WEB-INF/lib,构建路径中包含Web App Libraries。 我想到的唯一另一件事可能是我有一些版本矛盾,这就是为什么javax.persistence.spi.PersistenceProvider无法构建,但我不知道如何检查它。 还有可能我错了,还有另一个问题......

我在这里添加/WebContent/WEB-INF/web.xml/src/main/resources/META-INF/persistence.xml。如果还有其他需要,请告诉我,我会添加它。 我已经尝试解决这个问题已经4天了,我真的很沮丧,请帮忙!

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
         id="WebApp_ID" 
         version="3.1">
  <display-name>InaalEchtok</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

persistence.xml

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
             http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0">

    <persistence-unit name="model_persistence_unit">
        <description>Persistence unit for the JPA tutorial of the Hibernate Getting Started Guide</description>
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <!-- <class></class> -->
        <properties>
            <!-- <property name="javax.persistence.jdbc.driver" value="org.h2.Driver" /> -->
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
            <!-- <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/fdb" /> -->
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/fdb?createDatabaseIfNotExist=true" />
            <property name="javax.persistence.jdbc.user" value="****" />
            <property name="javax.persistence.jdbc.password" value="*********" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.hbm2ddl.auto" value="create" />
            <!-- <property name="hibernate.hbm2ddl.auto" value="update" /> -->
        </properties>
    </persistence-unit>
</persistence>

这些是我引用的库:

referenced libraries

这是我的WEB-INF/lib

WEB-INF/lib

1 个答案:

答案 0 :(得分:0)

嘻哈嘻哈! 嗯,这不是答案,但这就是我解决错误的方法:

我将项目转换为Maven项目并尝试运行它。 现在,错误消息更具体:No suitable driver found for 'jdbc:mysql://localhost:3306/mysql。 所以我将mysql-connector-java-5.1.43-bin.jar添加到我的WEB-INF/lib文件夹中,现在它可以正常工作!!!