Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jpa获取以下junit测试用例的错误_Jpa_Junit - Fatal编程技术网

使用jpa获取以下junit测试用例的错误

使用jpa获取以下junit测试用例的错误,jpa,junit,Jpa,Junit,下面是我使用jpa的junit测试用例 package com.msat.srt.dao; import static org.junit.Assert.*; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import java

下面是我使用jpa的junit测试用例

package com.msat.srt.dao;

import static org.junit.Assert.*;

import java.util.List;



import javax.persistence.EntityManager;  
import javax.persistence.EntityManagerFactory;  
import javax.persistence.Persistence;  
import javax.persistence.Query;

import org.apache.log4j.BasicConfigurator;  
import org.apache.log4j.Level;  
import org.apache.log4j.Logger;  
import org.junit.Before;  
import org.junit.BeforeClass;  
import org.junit.Ignore;  
import org.junit.Test;  


import com.msat.srt.vo.MarvalUpdateVO;

public class MarvalUpdateEJBTest {

      private static final String PERSISTENCE_UNIT_NAME = "SRTEJB";
      private static EntityManagerFactory emf;
      private EntityManager em;

    @BeforeClass
        public static void initializeLogging() {
          BasicConfigurator.configure();
          Logger.getLogger("org").setLevel(Level.ERROR);
        }

    @Before
      public void setUp() throws Exception {
         emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
         em = emf.createEntityManager();

     }
    @Test
    public void testGetAllTicketTypes() {

        Query qry = em.createQuery("select tb from TblSrtttypemaster tb");
        assertTrue(qry.getResultList().size() == 4);
          }

    }
我收到以下错误消息。。我不知道如何纠正它。我是否需要在上述测试类中再次包含db连接的属性

    java.lang.ClassFormatError: 

        Absent Code attribute in method that is not native or abstract in class file javax/validation/Validation   

        at java.lang.ClassLoader.defineClass1(Native Method)   
        at java.lang.ClassLoader.defineClassCond(Unknown Source)  
        at java.lang.ClassLoader.defineClass(Unknown Source)  
        at java.security.SecureClassLoader.defineClass(Unknown Source)  
        at java.net.URLClassLoader.defineClass(Unknown Source)  
        at java.net.URLClassLoader.access$000(Unknown Source)  
        at java.net.URLClassLoader$1.run(Unknown Source)  
        at java.security.AccessController.doPrivileged(Native Method)  
        at java.net.URLClassLoader.findClass(Unknown Source)  
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:170)    
        at org.hibernate.cfg.beanvalidation.BeanValidationActivator.applyDDL    (BeanValidationActivator.java:103)    
        at org.hibernate.cfg.Configuration.applyBeanValidationConstraintsOnDDL     (Configuration.java:1674)
        at org.hibernate.cfg.Configuration.applyConstraintsToDDL(Configuration.java:1624)
        at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1415)
        at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1345)
        at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1477)
        at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:193)    
        at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1096)    
        at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:278)    
        at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:362)    
        at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56)   
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48)   
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
        at com.msat.srt.dao.MarvalUpdateEJBTest.setUp(MarvalUpdateEJBTest.java:43)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)    
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
        at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
        at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
我正在使用JPA,这是我的persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="SRTEJB" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>jdbc/srt</jta-data-source>

    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
    <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.WebSphereExtendedJTATransactionLookup"/>
    <property name="hibernate.show_sql" value="false"/> 
    </properties>
    </persistence-unit>
</persistence>

org.hibernate.ejb.HibernatePersistence
jdbc/srt

这似乎是使用其中一个依赖项的问题

<dependency>  
   <groupId>javax</groupId>  
   <artifactId>javaee-api</artifactId>  
   <version>6.0</version>  
</dependency> 

OR

<dependency>  
   <groupId>javax</groupId>  
   <artifactId>javaee-web-api</artifactId>  
   <version>6.0</version>  
</dependency> 

爪哇
:

此依赖关系为您提供了JavaEEAPI,而不是实现。虽然此依赖项可用于编译,但不能用于执行代码(包括测试)

一个解决方案来自:

好的做法是始终从中获取javaee.jar文件的原始完整版本。只需下载并安装J2EE SDK,就可以在“\J2EE\u SDK\u FOLDER\lib”文件夹中找到javaee.jar。将其包含到本地Maven存储库或poject类路径中,将消除上述错误消息

另一个解决方案是:

另一种解决方案实际上适用于这两种情况,例如,使用[服务器供应商]提供的JavaEE规范工件


玻璃鱼
. 虽然“缺少的代码”可能不同,但您会发现问题主要是由“空的”javaeeapi jar引起的

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javaee-api</artifactId>
    <version>3.1.1</version>
</dependency>