java.lang.NoClassDefFoundError JPA示例

java.lang.NoClassDefFoundError JPA示例,java,jpa,derby,Java,Jpa,Derby,因此,我试图解决一些JPA问题,我得到了以下错误: Exception in thread "main" java.lang.NoClassDefFoundError: org.apache.commons.collections.set.MapBackedSet Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.set.MapBackedSet 我主要是从网上获取这段代码,以便首先让项目工作

因此,我试图解决一些JPA问题,我得到了以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org.apache.commons.collections.set.MapBackedSet
Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.set.MapBackedSet
我主要是从网上获取这段代码,以便首先让项目工作,然后我可以使用它并理解其工作原理。通过一些研究,我认为部分问题在于我缺少com.ibm.ws.jpa.thinclient.jar文件。但是我不知道在哪里可以找到它

My persistence.xml

<?xml version="1.0" encoding="UTF-8" ?>
<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" xmlns="http://java.sun.com/xml/ns/persistence">
  <persistence-unit name="user" transaction-type="RESOURCE_LOCAL">
    <class>jpa.Main</class>
    <properties>
      <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
      <property name="javax.persistence.jdbc.url"
        value=****Derby URL**** />
      <property name="javax.persistence.jdbc.user" value="test" />
      <property name="javax.persistence.jdbc.password" value="test" />
    </properties>

  </persistence-unit>
</persistence> 
My main.java

package jpa;

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

public class Main {

          private static final String PERSISTENCE_UNIT_NAME = "user";
          private static EntityManagerFactory factory;
          public static void main(String[] args) {
            factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
            EntityManager em = factory.createEntityManager();
            // Read the existing entries and write to console
            Query q = em.createQuery("select u from User u");
            List<User> userList = q.getResultList();
            for (User user : userList) {
              System.out.println(user);
            }
            System.out.println("Size: " + userList.size());
            em.getTransaction().begin();
            User user = new User();
            user.setUserID(12);
            user.setPassword("This is a test");
            em.persist(user);
            em.getTransaction().commit();
            em.close();
          }
        } 
包jpa;
导入java.util.List;
导入javax.persistence.EntityManager;
导入javax.persistence.EntityManagerFactory;
导入javax.persistence.persistence;
导入javax.persistence.Query;
公共班机{
私有静态最终字符串持久化\u UNIT\u NAME=“user”;
私营静态实体管理工厂;
公共静态void main(字符串[]args){
factory=Persistence.createEntityManagerFactory(Persistence\u UNIT\u NAME);
EntityManager em=factory.createEntityManager();
//读取现有条目并写入控制台
Query q=em.createQuery(“从用户u中选择u”);
List userList=q.getResultList();
for(用户:userList){
System.out.println(用户);
}
System.out.println(“Size:+userList.Size());
em.getTransaction().begin();
用户=新用户();
user.setUserID(12);
user.setPassword(“这是一个测试”);
em.persist(用户);
em.getTransaction().commit();
em.close();
}
} 

尝试将commons collections jar文件添加到您的库中

尝试将commons collections jar文件添加到您的库中

您需要将文件
com.ibm.ws.jpa.thinclient.jar
添加到类路径中。如果您已经安装了Websphere,则可以找到此文件。e、 g:

C:\IBM\SDP\runtimes\base_v7\runtimes\com.ibm.ws.jpa.thinclient_7.0.0.jar

另一方面,如果选择JPA()的引用实现,则不需要添加此jar。

您需要将文件
com.ibm.ws.JPA.thinclient.jar
添加到类路径。如果您已经安装了Websphere,则可以找到此文件。e、 g:

C:\IBM\SDP\runtimes\base_v7\runtimes\com.ibm.ws.jpa.thinclient_7.0.0.jar

另一方面,如果选择JPA()的引用实现,您不需要添加此jar。

您必须在org.apache.derby.jdbc.EmbeddedDriver所在的位置添加jar文件,并将com.ibm.ws.jpa.thinclient_8.5.0.jar作为依赖项。

您必须在org.apache.derby.jdbc.EmbeddedDriver所在的位置添加jar文件,并将com.ibm.ws.jpa.thinclient_8.5.0.jar作为依赖项添加。

这是否太晚了?看起来persistence.xml中没有命名“User”类。你只需要:

<class>jpa.Main</class>
jpa.Main

您是否尝试将“jpa.Main”更改为“jpa.User”?我认为您不需要在persistence.xml中命名jpa.Main,只需命名jpa.User即可。用户是您的实体类。

这是否太少太晚了?看起来persistence.xml中没有命名“User”类。你只需要:

<class>jpa.Main</class>
jpa.Main

您是否尝试将“jpa.Main”更改为“jpa.User”?我认为您不需要在persistence.xml中命名jpa.Main,只需命名jpa.User即可。User是您的实体类。

您确定commons collections jar在运行时可用于容器吗?您使用的是什么JPA实现?WebSphere JPA解决方案,基于Apache OpenJPA?@chrylis,我添加了jat,并在线程“main”org.Apache.OpenJPA.persistence.PersistenceException中获得异常,以及两个ClassNotFoundException和一个RuntimeException@PaulVargas我真的不知道。我对JPA完全是新手,而且对Java还是个新手。我已经安装了Websphere Server,但不确定OpenJPAAre是否确定容器在运行时可以使用commons collections jar?您使用的是什么JPA实现?WebSphere JPA解决方案,基于Apache OpenJPA?@chrylis,我添加了jat,并在线程“main”org.Apache.OpenJPA.persistence.PersistenceException中获得异常,以及两个ClassNotFoundException和一个RuntimeException@PaulVargas我真的不知道。我对JPA完全是新手,而且对Java还是个新手。我已经安装了Websphere Server,不确定OpenJPAI是否尝试了此操作,我得到了以下错误:线程“main”org.apache.openjpa.persistence.PersistenceException中的异常,以及两个ClassNotFoundException和一个RuntimeException我尝试了此操作,我得到了以下错误:线程“main”中的异常org.apache.openjpa.persistence.PersistenceException以及两个ClassNotFoundException和一个RuntimeException在线程“main”org.apache.openjpa.persistence.PersistenceException中得到:Exception以及两个ClassNotFoundException和一个RuntimeException如果您碰巧使用maven,将此添加为dependency:commons collections commons collections 3.2.1在线程“main”org.apache.openjpa.persistence.PersistenceException中尝试了该方法并获得了:Exception以及两个ClassNotFoundException和一个RuntimeException如果您碰巧使用maven,将其添加为依赖项:commons collections commons collections 3.2.1