1

我的项目正在使用 gwt+maven+hibernate 。并在我的项目中使用库来创建会话工厂

配置配置 = new AnnotationConfiguration(); sessionFactory = configuration.configure(configFile).buildSessionFactory();

并将其返回给我的应用程序。但我得到了例外:

    java.lang.IncompatibleClassChangeError: Implementing class  
at java.lang.ClassLoader.defineClass1(Native Method)    
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)  
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)  
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)  
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)     
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)   
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)   
at java.security.AccessController.doPrivileged(Native Method)   
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)   
at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload$WebAppClassLoaderExtension.findClass(JettyLauncher.java:372)    
at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:366)     
at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:337)     
at com.appops.server.data.hibernate.SessionProvider.createSessionFactory(SessionProvider.java:47)   
at com.appops.server.data.hibernate.HibernateDataSourceConnector.init(HibernateDataSourceConnector.java:39)     
at com.engile.server.services.ConfigurationServlet.init(ConfigurationServlet.java:49)   
at com.google.inject.servlet.ServletDefinition.init(ServletDefinition.java:117)     
at com.google.inject.servlet.ManagedServletPipeline.init(ManagedServletPipeline.java:82)    
at com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:102)     
at com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:172)     
at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)     
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)     
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:593)     
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)     
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220)     
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513)    
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)   
at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload.doStart(JettyLauncher.java:468)     
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)     
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)    
at org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.java:115)  
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)     
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)    
at org.mortbay.jetty.Server.doStart(Server.java:222)    
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)     
at com.google.gwt.dev.shell.jetty.JettyLauncher.start(JettyLauncher.java:672)   
at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509)     
at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068)    
at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811)     
at com.google.gwt.dev.DevMode.main(DevMode.java:311)

但是当我使用

配置配置 = 新配置();sessionFactory = configuration.configure(configFile).buildSessionFactory();

Its throwing :

Caused by: org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="com.common.Stock"/>
    at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1600)
    at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1555)
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1534)
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1508)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1428)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1414)

我的 pom.xml 看起来像:

<dependencies>
        <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt-servlet</artifactId>
            <version>${gwtVersion}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt-user</artifactId>
            <version>${gwtVersion}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.7</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.0.0.GA</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.0.0.GA</version>
            <classifier>sources</classifier>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>appops_shared</groupId>
            <artifactId>appops_shared</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>appops_client</groupId>
            <artifactId>appops_client</artifactId>
            <version>1.0</version>
        </dependency>
        <!-- <dependency> <groupId>appops_server</groupId> <artifactId>appops_server</artifactId> 
            <version>1.0</version> </dependency> -->
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.7</version>
        </dependency>
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.21</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-core</artifactId>
            <version>3.4.0</version>
        </dependency>
        <dependency>
            <groupId>local.mvp4g</groupId>
            <artifactId>mvp4g</artifactId>
            <version>1.4.0</version>
        </dependency>


        <dependency>
            <groupId>aopalliance</groupId>
            <artifactId>aopalliance</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>com.google.gwt.inject</groupId>
            <artifactId>gin</artifactId>
            <version>2.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.reflections</groupId>
            <artifactId>reflections</artifactId>
            <version>0.9.8</version>
        </dependency>
        <dependency>
            <groupId>com.googlecode.gwtupload</groupId>
            <artifactId>gwtupload</artifactId>
            <version>0.6.4</version>
        </dependency>

        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mailapi</artifactId>
            <version>1.4.3</version>
        </dependency>
        <!-- <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.1.7.Final</version>
        </dependency> -->
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>4.1.0.Final</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>

        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>com.googlecode.gwtphonegap</groupId>
            <artifactId>gwtphonegap</artifactId>
            <version>1.8.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.atmosphere</groupId>
            <artifactId>atmosphere-gwt-server</artifactId>
            <version>1.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.atmosphere</groupId>
            <artifactId>atmosphere-gwt-poll</artifactId>
            <version>1.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.atmosphere</groupId>
            <artifactId>atmosphere-gwt-common</artifactId>
            <version>1.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.atmosphere</groupId>
            <artifactId>atmosphere-compat-tomcat</artifactId>
            <version>1.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.atmosphere</groupId>
            <artifactId>atmosphere-compat-tomcat7</artifactId>
            <version>1.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.atmosphere</groupId>
            <artifactId>atmosphere-compat-jbossweb</artifactId>
            <version>1.0.1</version>
        </dependency>
        <dependency>
            <groupId>com.google.inject</groupId>
            <artifactId>guice</artifactId>
            <version>3.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.inject.extensions</groupId>
            <artifactId>guice-assisted-inject</artifactId>
            <version>2.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.inject.extensions</groupId>
            <artifactId>guice-servlet</artifactId>
            <version>3.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.oauth-client</groupId>
            <artifactId>google-oauth-client</artifactId>
            <version>1.11.0-beta</version>
        </dependency>
        <dependency>
            <groupId>com.google.oauth-client</groupId>
            <artifactId>google-oauth-client-servlet</artifactId>
            <version>1.11.0-beta</version>
        </dependency>
        <dependency>
            <groupId>org.atmosphere</groupId>
            <artifactId>atmosphere-runtime</artifactId>
            <version>1.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.atmosphere</groupId>
            <artifactId>atmosphere-gwt-client</artifactId>
            <version>1.0.1</version>
        </dependency>

        <dependency>
            <groupId>net.sf.ehcache</groupId>
            <artifactId>ehcache</artifactId>
            <version>1.5.0</version>
        </dependency>
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-c3p0</artifactId>
            <version>4.1.7.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate</artifactId>
            <version>3.0.5</version>
        </dependency>

        <dependency>
            <groupId>gwt-oauth2</groupId>
            <artifactId>gwt-oauth2</artifactId>
            <version>0.2</version>
            <classifier>alpha</classifier>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.1</version>
        </dependency>
        <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt-dev</artifactId>
            <version>${gwtVersion}</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>

        <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-commons-annotations</artifactId>
    <version>3.2.0.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.0-api</artifactId>
    <version>1.0.0.Final</version>
</dependency>
<dependency>
    <groupId>javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.12.0.GA</version>
</dependency>
            <dependency>
    <groupId>javax.transaction</groupId>
    <artifactId>jta</artifactId>
    <version>1.1</version>
</dependency>
            <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-annotations</artifactId>
    <version>3.5.6-Final</version>
</dependency>

    </dependencies>

我不明白缺少哪个 jar,或者我使用的 jar 版本不正确。有人可以帮我摆脱这个例外。

4

1 回答 1

0

根据http://docs.oracle.com/javase/7/docs/api/java/lang/IncompatibleClassChangeError.html

当某些类定义发生不兼容的类更改时抛出。当前执行的方法所依赖的某个类的定义已经改变。

我注意到你的类路径中有两个可能冲突的休眠类,一个来自com.appops.server.data.Hibernate另一个来自org.hibernate,这可能是什么导致了你的问题?

于 2013-01-03T11:46:53.807 回答