2013-01-03 43 views
1

我的项目是使用GWT +行家+ hibernate的。而使用库在我的项目创建使用org.hibernate.MappingException:+不兼容的类变化错误

配置配置=新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的版本不正确。有人能帮助我摆脱这个例外。

+0

你有意使用Hibernate 3.0.5吗?你能用更新的版本吗? –

+0

我有同样的问题...任何解决方案? – appsthatmatter

回答

0

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

时不兼容的类变化而出现的一些类 定义时,抛出。目前执行方法所依赖的某个类的定义已经改变。

我注意到你在你的classpath中引入两个可能相互冲突的Hibernate类,一个从com.appops.server.data.Hibernate另外从org.hibernate作为,可这可能就是问题所在?

+0

在com.appops.server.data.Hibernate.SessionProvider类中我刚刚创建了sessionfactory,因此可能是什么解决方案。并且这个类来自我的应用程序使用的库。 – pbhle