0

Hibernate を使用する Maven ビルドの Web アプリケーションがあります。Tomcat では正常に実行されますが、.xml 内で実行すると次の例外が発生して失敗しますjetty-maven-plugin

java.lang.TypeNotPresentException: Type org.hibernate.collection.PersistentCollection not present
at sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:98)
at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:107)
at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:31)
at sun.reflect.generics.visitor.Reifier.reifyTypeArguments(Reifier.java:50)
at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:120)
at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:31)
at sun.reflect.generics.repository.ClassRepository.getSuperInterfaces(ClassRepository.java:82)
at java.lang.Class.getGenericInterfaces(Class.java:794)
at org.springframework.core.GenericTypeResolver.doResolveTypeArguments(GenericTypeResolver.java:170)
at org.springframework.core.GenericTypeResolver.resolveTypeArguments(GenericTypeResolver.java:164)
<snip>
Caused by: 
java.lang.ClassNotFoundException: org.hibernate.collection.PersistentCollection
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:424)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:377)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:95)
at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:107)
at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:31)
at sun.reflect.generics.visitor.Reifier.reifyTypeArguments(Reifier.java:50)
at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:120)
at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:31)
at sun.reflect.generics.repository.ClassRepository.getSuperInterfaces(ClassRepository.java:82)
at java.lang.Class.getGenericInterfaces(Class.java:794)

org.hibernate.collection.PersistentCollectionこれはhibernate-core、Web アプリケーションへの推移的な依存関係として含まれています。Tomcat にドロップするとアプリケーションが正しく実行されるため、WAR で確実にアクセスできます。

POM には、次のプラグイン構成が含まれています。

<plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>8.1.3.v20120416</version>

    <configuration>
        <jettyXml>src/main/jetty/jetty-env.xml</jettyXml>
    </configuration>

    <dependencies>
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.9</version>
        </dependency>
    </dependencies>
</plugin>

jetty-maven-pluginが解決しないのはなぜorg.hibernate.collection.PersistentCollectionですか?

4

1 に答える 1

0

これは、Spring Flex と Hibernate 4 の間の非互換性であることが判明しました: https://jira.springsource.org/browse/FLEX-220

于 2012-05-23T16:28:09.457 に答える