我在运行我的 eclipselink 项目时遇到此错误。

[EL 警告]: 2008.12.05 11:47:08.056--java.lang.NoClassDefFoundError: org/jboss/resource/adapter/jdbc/ValidConnectionChecker 在尝试 PersistenceLoadProcessor 加载类 com.mysql.jdbc.integration.jboss 时抛出.MysqlValidConnectionChecker。该类被忽略。

线程“main”中的异常 java.lang.NoClassDefFoundError: org/jboss/resource/adapter/jdbc/ValidConnectionChecker
        在 java.lang.ClassLoader.defineClass1(本机方法)
        在 java.lang.ClassLoader.defineClass(未知来源)
        在 java.security.SecureClassLoader.defineClass(未知来源)
        在 java.net.URLClassLoader.defineClass(未知来源)
        在 java.net.URLClassLoader.access$000(未知来源)
        在 java.net.URLClassLoader$1.run(未知来源)
        在 java.security.AccessController.doPrivileged(本机方法)
        在 java.net.URLClassLoader.findClass(未知来源)
        在 java.lang.ClassLoader.loadClass(未知来源)
        在 sun.misc.Launcher$AppClassLoader.loadClass(未知来源)
        在 java.lang.ClassLoader.loadClass(未知来源)
        在 org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.loadClass(PersistenceUnitProcessor.java:261)
        在 org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor.initPersistenceUnitClasses(MetadataProcessor.java:247)
        在 org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor.processEntityMappings(MetadataProcessor.java:422)
        在 org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processORMetadata(PersistenceUnitProcessor.java:299)
        在 org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:830)
        在 org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.callPredeploy(JPAInitializer.java:101)
        在 org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.initPersistenceUnits(JPAInitializer.java:149)
        在 org.eclipse.persistence.internal.jpa.deployment.JPAInitializer.initialize(JPAInitializer.java:135)
        在 org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:104)
        在 org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:64)
        在 javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
        在 javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)
        在 Main.main(Main.java:32)
引起:java.lang.ClassNotFoundException:org.jboss.resource.adapter.jdbc.ValidConnectionChecker
        在 java.net.URLClassLoader$1.run(未知来源)
        在 java.security.AccessController.doPrivileged(本机方法)
        在 java.net.URLClassLoader.findClass(未知来源)
        在 java.lang.ClassLoader.loadClass(未知来源)
        在 sun.misc.Launcher$AppClassLoader.loadClass(未知来源)
        在 java.lang.ClassLoader.loadClass(未知来源)
        在 java.lang.ClassLoader.loadClassInternal(未知来源)
        ... 还有 24 个

有任何想法吗?为什么 eclipselink 需要 jboss 的东西?我需要什么jboss jar。我会使用 open jpa,但由于某种原因,在我的应用程序退出一些持续存在后,它开始出现一堆 stackoverflow 错误。


如果您的项目根本不应该使用 JBoss,但仍然需要一些 JBoss 类,这可能意味着:

  • 您的默认服务器是 JBoss(在服务器视图中)
  • 或者你的persistence.xml在你yourProjectEJB/ejbModule/META-INF确实引用了 JBoss

你能发布你的 persistence.xml 文件吗?如果您也可以发布用于获取 EntityManager 的代码片段,那就更好了。