Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
Spring JBoss 5.1:未找到实体类(vfszip)_Spring_Hibernate_Jboss - Fatal编程技术网

Spring JBoss 5.1:未找到实体类(vfszip)

Spring JBoss 5.1:未找到实体类(vfszip),spring,hibernate,jboss,Spring,Hibernate,Jboss,我正在使用JBoss5.1和Hibernate3.6、JPA2.0和Spring3.0.5。 我使用maven构建EAR文件,该文件如下所示: AutoTrader.ear -------> META-INF --------------> application.xml --------------> jboss-app.xml --------------> MANIFEST.MF -------> AutoTrader.war 如果我在JBoss5.1中部

我正在使用JBoss5.1和Hibernate3.6、JPA2.0和Spring3.0.5。 我使用maven构建EAR文件,该文件如下所示:

AutoTrader.ear 
-------> META-INF
--------------> application.xml
--------------> jboss-app.xml
--------------> MANIFEST.MF
-------> AutoTrader.war
如果我在JBoss5.1中部署这个ear文件,就会出现错误

org.springframework.dao.InvalidDataAccessApiUsageException: Not an entity: class uk.co.aol.shipmanager.domain.Manager; nested exception is ja
va.lang.IllegalArgumentException: Not an entity: class uk.co.aol.shipmanager.domain.Subscription
        at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:286) ~[at_war-1.0.war:3
.0.5.RELEASE]
        at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:104) ~[at_war-1.0.war:3.0.5.RELEASE
]
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:368) ~[at_war-1.
0.war:3.0.5.RELEASE]
        at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:58
) ~[at_war-1.0.war:3.0.5.RELEASE]
但是,如果我部署war文件,它可以正常工作。 欢迎提出任何建议

谢谢, 阿迪

更新:

我添加了一个ResourceScanner,它扩展了NativeScanner:

public class ResourceScanner extends NativeScanner {

    @Override
    public Set<Class<?>> getClassesInJar(final URL jarToScan,
            final Set<Class<? extends Annotation>> annotationsToLookFor) {
        return super.getClassesInJar(patchUrl(jarToScan), annotationsToLookFor);
    }

    @Override
    public Set<NamedInputStream> getFilesInJar(final URL jarToScan, final Set<String> filePatterns) {
        return super.getFilesInJar(patchUrl(jarToScan), filePatterns);
    }

    @Override
    public Set<Package> getPackagesInJar(final URL jarToScan,
            final Set<Class<? extends Annotation>> annotationsToLookFor) {
        return super.getPackagesInJar(patchUrl(jarToScan), annotationsToLookFor);
    }

    @Override
    public String getUnqualifiedJarName(final URL jarToScan) {
        return super.getUnqualifiedJarName(patchUrl(jarToScan));
    }

    /**
     * Patch the VFS URL to a FILE protocol URL.
     * 
     * @param url
     *            original URL.
     * @return either the original, either the corresponding FILE protocol of given VFS URL.
     */
    protected URL patchUrl(final URL url) {
        String protocol = url.getProtocol();

        if (protocol.equals("vfs")) {
            try {
                File file = new File(url.getFile());
                return file.toURI().toURL();
            } catch (final MalformedURLException e) {
                return url;
            } catch (IOException e) {
                e.printStackTrace();
                return url;
            }

        }
        return url;
    }
}
公共类ResourceScanner扩展了NativeScanner{
@凌驾

public Set您是否尝试使用以下系统参数并查看它是否有助于解决问题

-Dorg.jboss.net.protocol.file.useURI=false

这听起来像是分解的ear工作,因为它可以找到依赖的jar文件。我认为使用ear,您必须引用清单文件的类路径中的那些文件,或者可能是application.xml文件。这听起来像是类路径问题,或者可能是部署顺序问题。如果类在EAR,但可能分解版本以不同的顺序部署。这有时是个问题,因此请检查您的依赖项,看看是否可以在EAR中定义它们。WAR的布局是什么?您是否有persistence.xml?您是否用@Entity注释了管理器和订阅类(或提供了适当的xml配置).第三方JAR应该放在WARs WEB-INF/lib或EARs-lib目录中。
-Dorg.jboss.net.protocol.file.useURI=false