Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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
Java 如何使Hibernate、JBoss和Eclipse在单元测试中协同工作?_Java_Eclipse_Hibernate_Jboss - Fatal编程技术网

Java 如何使Hibernate、JBoss和Eclipse在单元测试中协同工作?

Java 如何使Hibernate、JBoss和Eclipse在单元测试中协同工作?,java,eclipse,hibernate,jboss,Java,Eclipse,Hibernate,Jboss,我最近开始从事相关的JBoss EAR、WAR和EJB项目(JBoss 7.7.1)。开发人员正在使用Eclipse进行开发,我们通过Eclipse启动JBoss并进行调试 我可以在Eclipse/JBoss中毫无问题地启动我们的webapp 考虑到我们根本没有测试,我决定开始设置一个测试环境,最初只是测试EJB项目。但是当我尝试启动测试时,我在配置方面遇到了很多困难(我已经到处查看并看到了类似的问题,但没有任何东西对我有效) 项目结构如下所示: ccc-ejb/ src/

我最近开始从事相关的JBoss EAR、WAR和EJB项目(JBoss 7.7.1)。开发人员正在使用Eclipse进行开发,我们通过Eclipse启动JBoss并进行调试

我可以在Eclipse/JBoss中毫无问题地启动我们的webapp

考虑到我们根本没有测试,我决定开始设置一个测试环境,最初只是测试EJB项目。但是当我尝试启动测试时,我在配置方面遇到了很多困难(我已经到处查看并看到了类似的问题,但没有任何东西对我有效)

项目结构如下所示:

ccc-ejb/
    src/
        ccc/
            <packages and classes under here>
        META-INF/persistence.xml
    test/
        ccc/
            <packages and classes under here>
            TestDatabase.java
这项研究的结果是:

/usr/local/jboss-7.1.1-final/modules/org/hibernate/main/hibernate-entitymanager-4.0.1.Final.jar:/Development/workspace-ccc-dev/ccc-ejb/build/classes:/Development/workspace-ccc-dev/ccc-ejb/lib/json_simple-1.1.jar:/usr/local/jboss-7.1.1-final/modules/javax/activation/api/main/activation-1.1.1.jar:/usr/local/jboss-7.1.1-final/modules/javax/annotation/api/main/jboss-annotations-api_1.1_spec-1.0.0.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/ejb/api/main/jboss-ejb-api_3.1_spec-1.0.1.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/el/api/main/jboss-el-api_2.2_spec-1.0.0.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/enterprise/api/main/cdi-api-1.0-SP4.jar:/usr/local/jboss-7.1.1-final/modules/javax/enterprise/deploy/api/main/jboss-jad-api_1.2_spec-1.0.0.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/faces/api/main/jboss-jsf-api_2.1_spec-2.0.1.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/inject/api/main/javax.inject-1.jar:/usr/local/jboss-7.1.1-final/modules/javax/interceptor/api/main/jboss-interceptors-api_1.1_spec-1.0.0.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/jms/api/main/jboss-jms-api_1.1_spec-1.0.0.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/jws/api/main/jsr181-api-1.0-MR1.jar:/usr/local/jboss-7.1.1-final/modules/javax/mail/api/main/mail-1.4.4.jar:/usr/local/jboss-7.1.1-final/modules/javax/management/j2ee/api/main/jboss-j2eemgmt-api_1.1_spec-1.0.0.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/persistence/api/main/hibernate-jpa-2.0-api-1.0.1.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/resource/api/main/jboss-connector-api_1.6_spec-1.0.0.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/rmi/api/main/jboss-rmi-api_1.0_spec-1.0.4.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/security/auth/message/api/main/jboss-jaspi-api_1.0_spec-1.0.0.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/security/jacc/api/main/jboss-jacc-api_1.4_spec-1.0.1.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/servlet/api/main/jboss-servlet-api_3.0_spec-1.0.0.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/servlet/jsp/api/main/jboss-jsp-api_2.2_spec-1.0.0.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/servlet/jstl/api/main/jboss-jstl-api_1.2_spec-1.0.2.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/transaction/api/main/jboss-transaction-api_1.1_spec-1.0.0.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/validation/api/main/validation-api-1.0.0.GA.jar:/usr/local/jboss-7.1.1-final/modules/javax/ws/rs/api/main/jboss-jaxrs-api_1.1_spec-1.0.0.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/wsdl4j/api/main/wsdl4j-1.6.2.jar:/usr/local/jboss-7.1.1-final/modules/javax/xml/bind/api/main/jboss-jaxb-api_2.2_spec-1.0.3.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/xml/registry/api/main/jboss-jaxr-api_1.0_spec-1.0.1.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/xml/rpc/api/main/jboss-jaxrpc-api_1.1_spec-1.0.0.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/xml/soap/api/main/jboss-saaj-api_1.3_spec-1.0.1.Final.jar:/usr/local/jboss-7.1.1-final/modules/javax/xml/ws/api/main/jboss-jaxws-api_2.2_spec-2.0.0.Final.jar:/usr/local/jboss-7.1.1-final/modules/org/hibernate/validator/main/hibernate-validator-4.2.0.Final.jar:/usr/local/jboss-7.1.1-final/modules/org/picketbox/main/picketbox-4.0.7.Final.jar:/usr/local/jboss-7.1.1-final/modules/org/picketbox/main/picketbox-commons-1.0.0.final.jar:/usr/local/jboss-7.1.1-final/modules/org/picketbox/main/picketbox-infinispan-4.0.7.Final.jar:/usr/local/jboss-7.1.1-final/modules/org/jboss/as/controller-client/main/jboss-as-controller-client-7.1.1.Final.jar:/usr/local/jboss-7.1.1-final/modules/org/jboss/dmr/main/jboss-dmr-1.1.1.Final.jar:/usr/local/jboss-7.1.1-final/modules/org/jboss/logging/main/jboss-logging-3.1.0.GA.jar:/usr/local/jboss-7.1.1-final/modules/org/jboss/resteasy/resteasy-jaxb-provider/main/resteasy-jaxb-provider-2.3.2.Final-jandex.jar:/usr/local/jboss-7.1.1-final/modules/org/jboss/resteasy/resteasy-jaxb-provider/main/resteasy-jaxb-provider-2.3.2.Final.jar:/usr/local/jboss-7.1.1-final/modules/org/jboss/resteasy/resteasy-jaxrs/main/async-http-servlet-3.0-2.3.2.Final-jandex.jar:/usr/local/jboss-7.1.1-final/modules/org/jboss/resteasy/resteasy-jaxrs/main/async-http-servlet-3.0-2.3.2.Final.jar:/usr/local/jboss-7.1.1-final/modules/org/jboss/resteasy/resteasy-jaxrs/main/resteasy-jaxrs-2.3.2.Final-jandex.jar:/usr/local/jboss-7.1.1-final/modules/org/jboss/resteasy/resteasy-jaxrs/main/resteasy-jaxrs-2.3.2.Final.jar:/usr/local/jboss-7.1.1-final/modules/org/jboss/resteasy/resteasy-multipart-provider/main/resteasy-multipart-provider-2.3.2.Final-jandex.jar:/usr/local/jboss-7.1.1-final/modules/org/jboss/resteasy/resteasy-multipart-provider/main/resteasy-multipart-provider-2.3.2.Final.jar:/usr/local/jboss-7.1.1-final/modules/org/jboss/ejb3/main/jboss-ejb3-ext-api-2.0.0.jar
null
class org.hibernate.ejb.HibernatePersistence
java.lang.NoClassDefFoundError: org/hibernate/proxy/EntityNotFoundDelegate
问题:

  • 该项目在Eclipse中被配置为EJB项目,因此会自动将大量JBoss JAR和JBoss模块JAR放在构建路径上(包括Hibernate JAR)。但是,hibernate-entitymanager-4.0.1.Final.jar不是自动添加的,我需要自己添加它。如果我不手动添加它,那么将找不到org.hibernate.ejb.HibernatePersistence。好奇为什么这个jar不会像其他jar文件一样自动包含
  • persistence.xml资源的输出为空?没有找到。我怎样才能解决这个问题
  • Eclipse构建时,会将所有类放在此处:

    /Development/workspace-ccc-dev/ccc-ejb/build/classes
    
    这个目录肯定位于上面println输出的类路径上。此外,在classes目录中,我可以看到:

    classes/ccc/TestDatabase.class
    classes/META-INF/persistence.xml
    
    为什么没有提取persistence.xml文件

  • NoClassDefFoundError:org/hibernate/proxy/EntityNotFoundDelegate看起来也不太好。当我得到1和2的修正后,我将开始讨论这个问题,但这里的任何提示也将非常感谢
  • 谢谢

    为什么没有提取persistence.xml文件

    因为加载它的路径是错误的。应该是

    System.class.getResource("/META-INF/persistence.xml")
    
    如果没有前导斜杠,路径将被解释为相对于系统类的包。使用前导斜杠,它从类路径的根开始


    关于其他问题,我不知道。但是我不明白为什么任何东西都应该“自动”添加到构建路径中。如果在构建路径中需要jar,请将其添加到构建路径中。我不明白为什么这会是个问题。

    啊,是的,谢谢你的提醒,我完全错过了。我的意思是“自动”添加到构建路径中的内容是,在Eclipse中,您需要将JBoss运行时环境与EJB项目相关联。一旦您这样做,就会“自动”将一堆JAR添加到构建路径和运行时类路径中。我说是自动的,因为Eclipse似乎决定添加哪些模块、JAR等。并没有添加运行时所需的所有jar。Eclipse如何决定添加哪些JBoss JAR和模块似乎是“自动”的,或者更好的是“自动”。
    classes/ccc/TestDatabase.class
    classes/META-INF/persistence.xml
    
    System.class.getResource("/META-INF/persistence.xml")