2015-06-24 3 views
0

Я никогда не использовал maven раньше. Но я всегда этого хочу. Я обновляю один проект eclipse, над которым я работаю, чтобы быть в maven.java.lang.NoSuchMethodError org.hibernate.cfg.Configuration.addAnnotatedClass

enter image description here

Это был мой WEB-INF/Lib папка со всеми моими баночками.

Теперь я хотел бы сделать то же самое в мавена добавления зависимостей, один за другим, но им, имеющих ошибки

Когда я вхожу сервлет я получаю это:

excepción 

javax.servlet.ServletException: La ejecución del Servlet lanzó una excepción 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
causa raíz 

java.lang.ExceptionInInitializerError 
    util.HibernateUtil.<clinit>(HibernateUtil.java:38) 
    app.Model.getProvincias(Model.java:74) 
    servlet.FormS.doGet(FormS.java:22) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:620) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
causa raíz 

java.lang.NoSuchMethodError: org.hibernate.cfg.Configuration.addAnnotatedClass(Ljava/lang/Class;)Lorg/hibernate/cfg/Configuration; 
    util.HibernateUtil.<clinit>(HibernateUtil.java:25) 
    app.Model.getProvincias(Model.java:74) 
    servlet.FormS.doGet(FormS.java:22) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:620) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 

Вот мой спящий режим Настройка файла спящего режима. cfg.xml

<?xml version='1.0' encoding='UTF-8'?> 
<!DOCTYPE hibernate-configuration PUBLIC 
      "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
      "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
<session-factory> 
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 


    <property name="connection.password">pass</property> 
    <property name="connection.url">jdbc:mysql://obram2.com/obram2_base</property> 


    <!-- 
     <property name="connection.url">jdbc:mysql://192.168.200.41/obram2_base</property> 

    --> 

    <property name="hibernate.c3p0.min_size">5</property> 
    <property name="hibernate.c3p0.max_size">20</property> 
    <property name="hibernate.c3p0.timeout">300</property> 
    <property name="hibernate.c3p0.max_statements">50</property> 
    <property name="hibernate.c3p0.idle_test_period">3000</property> 

    <property name="connection.username">obram2_root</property> 
    <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> 
    <property name="show_sql">false</property> 
    <property name="hibernate.hbm2ddl.auto">update</property> 

</session-factory> 
</hibernate-configuration> 

И это мой HibernateUtil

package util; 


import org.hibernate.SessionFactory; 
import org.hibernate.boot.registry.StandardServiceRegistryBuilder; 
import org.hibernate.cfg.Configuration; 
import org.hibernate.service.ServiceRegistry; 

import bean.Business; 
import bean.Client; 
import bean.Form; 
import bean.Pago; 
public class HibernateUtil 
{ 
    //private static final SessionFactory sessionFactory; 
    private static SessionFactory sessionFactory; 
    private static ServiceRegistry serviceRegistry; 

    static 
    { 
     try 
     { 

      Configuration configuration = new Configuration().configure() 
       .addAnnotatedClass(Localidad.class) 
       .addAnnotatedClass(Form.class) 
       .addAnnotatedClass(Client.class) 
       .addAnnotatedClass(Business.class) 
       .addAnnotatedClass(Provincia.class) 
       .addAnnotatedClass(Pago.class); 
      serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); 
      sessionFactory = configuration.buildSessionFactory(serviceRegistry); 

     } 
     catch (Throwable ex) 
     { 
      System.err.println("Initial SessionFactory creation failed." + ex); 
      throw new ExceptionInInitializerError(ex); 
     } 
    } 

    public static SessionFactory getSessionFactory() 
    { 
     return sessionFactory; 
    } 
} 

И, наконец, здесь все мои новые зависимости Maven, который я пытался остаться в тех же версиях все из них:

enter image description here

И мой pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>OBRAM2</groupId> 
    <artifactId>OBRAM2</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <build> 
    <sourceDirectory>src</sourceDirectory> 
    <resources> 
     <resource> 
     <directory>src</directory> 
     <excludes> 
      <exclude>**/*.java</exclude> 
     </excludes> 
     </resource> 
    </resources> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.1</version> 
     <configuration> 
      <source>1.7</source> 
      <target>1.7</target> 
     </configuration> 
     </plugin> 
     <plugin> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.3</version> 
     <configuration> 
      <warSourceDirectory>WebContent</warSourceDirectory> 
      <failOnMissingWebXml>false</failOnMissingWebXml> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    <dependencies> 
    <dependency> 
     <groupId>javax.mail</groupId> 
     <artifactId>javax.mail-api</artifactId> 
     <version>1.5.3</version> 
    </dependency> 
    <dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.17</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.velocity</groupId> 
     <artifactId>velocity</artifactId> 
     <version>1.7</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.code.gson</groupId> 
     <artifactId>gson</artifactId> 
     <version>2.3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.17</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.3.8.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate.common</groupId> 
     <artifactId>hibernate-commons-annotations</artifactId> 
     <version>4.0.5.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <version>3.4</version> 
    </dependency> 
    </dependencies> 
</project> 

Помните точно такой же код работал до maven, я не вносил никаких изменений.

Спасибо!

+0

попробуйте добавить эту зависимость также \t org.hibernate \t Hibernate-аннотаций \t 3.5.6-Final ManojP

ответ

0

Я, наконец, решил это, создав структуру папок maven. Кажется, что Eclipse Configure-> Conver в Maven не делает этого.

src\main\java 
     here my files 
src\main\resources 
src\main\webapp 
0

При определении Maven он решает все вложенные зависимости от ваших артефактов и принимать решения о версиях артефактов. Вы можете решить эти конфликты, перейдя в цель/{yourapp}/WEB-INF/lib/и посмотрите на точные банки, которые maven упаковывает на войну. Если некоторые из них не соответствуют вашим начальным/lib, вы можете использовать диспетчер зависимости eclipse maven (или использовать непосредственно на pom), чтобы исключить те, которые вы не хотите.

Ошибка, которую вы получаете, очень обычна, когда вы используете разные версии ваших артефактов.

Смежные вопросы