2015-07-30 7 views
5

У меня есть мой hibernate.cfg.xml, расположенный по адресу src/main/resources/, но я продолжаю получать эту ошибку при запуске моего проекта maven, я также попытался поместить путь к файлу в конфигурации, подобной этой, но все же получена ошибкаJava - hibernate.cfg.xml Файл не найден

Configuration conf = new Configuration(); 
conf.configure("/src/main/resources/hibernate.cfg.xml"); 

Что я делаю неправильно?

И когда я перехожу к свойствам проекта и перехожу к источнику, я вижу/src/main/resources в пути сборки?

Он также работает, когда я делаю это в затмении, но когда я экспортировать в банку она перестает работать, но я его в классе пути, как вы можете увидеть enter image description here

Благодаря

Редактировать

Вот мой каталог в мой затмение проекта

enter image description here

А потом вот это, когда я открываю файл .jar

enter image description here

Вы хотите сказать .xml должен находиться в корневом каталоге?

+0

какая версия зимовать вы используете – dom

+0

@dom зимуют 4.1.9 – spenf10

+0

удалить строковый аргумент из Configure и сделать чистый проект сборки и запуска путем определения основного класса – dom

ответ

6

В вашем построенном проекте нет /src/main/resources, то есть где maven хранит файлы перед их созданием. При создании проекта (я предполагаю, что вы строите .jar -artifact) Maven будет делать следующее:

  1. Все .java -файлы в src/main/java будут собраны в .class-файлы и будут перемещены в подкаталог jar, соответствующий их пакет
  2. Все файлы из src/main/resources будут скопированы в корень jar-file

Так этот файл-структуры в проекте:

src 
| 
+-main 
    | 
    +-java 
    | | 
    | +- mypackage 
    |   | 
    |   +- MyClass.java 
    | 
    +-resources 
     | 
     +- hibernate.cfg.xml 

будет в конечном итоге в вашем .jar-file, как это:

project.jar 
| 
+- mypackage 
|  | 
|  +- MyClass.class 
| 
+- hibernate.cfg.xml 

Существенный момента является: Все файлами из /src/main/resources будут в конечном итоге в пути к классам вашего проекта постройки. Но так как конфигурация-файл с именем hibernate.cfg.xml и находится на пути к классам, вы должны быть в порядке просто делать

Configuration conf = new Configuration(); 
conf.configure(); 

Обратите внимание, что configure() называется wthout аргумента, так что это означает «Ищите файл с именем hibernate.cfg.xml на вашем токе Путь к классам». Поэтому попробуйте удалить аргумент из вашего configure -call.

+0

Я предполагаю, что это будет немного более понятным, если бы вы добавьте пример файловой структуры до и после строительства. – Jan

+0

Итак, вы говорите, что я делаю, все должно быть в порядке, я тоже так думал, но его не работали, вы могли бы объяснить немного больше о том, что вы имеете в виду под iWTW.WARA и т. Д. – spenf10

+0

@Jan благодарит за предложение, пробовал добавьте его в ответ –

4

При использовании maven с hibernate, нужно только активнее shade plugin и hibernate.cfg.xml будет идти в нужном месте, так что вы можете запустить файл с помощью java -jar jarfile.jar.Строфа вам нужно что-то вроде:

<build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-shade-plugin</artifactId> 
     <version>2.4.1</version> 
     <executions> 
      <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>shade</goal> 
      </goals> 
      <configuration> 
       <transformers> 
       <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
        <mainClass>com.example.jpa.Main</mainClass> 
       </transformer> 
       </transformers> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 

Чтобы создать соответствующий uberjar, тип mvn package и Боба твой дядя.

+0

Вы хотите положить вышеуказанный xml в мой pom.xml? А затем сделать «mvn package» в терминале? – spenf10

+0

Да, это именно то, что я говорю. – hd1

+0

хорошо, я сделал это и получил «BUILD SUCCESS», а затем что я просто экспортирую как .jar и запустил его? – spenf10

0

Если вы уверены, что ваш файл в resources папке а затем проверить эту Right click on project->Properties->Deployment Assembly и если ваш ресурс файл карта с Deploy Путем или не

enter image description here

+0

Извините, я не вижу 'Развертывание сборки'? – spenf10

+0

Какую IDE вы используете? –

+0

Я использую eclipse – spenf10

3

Первой ясно одно проверить, что если вы используете Maven с спящим режимом так что нет никакой необходимости, чтобы определить имя hibernate.cfg.xml в призыве configure()

закрыть проект затем вновь открыть его использовать ниже код для создания сеанса завода Вы должны зимовать 4 или выше

public class HibernateUtils { 

    private static SessionFactory sessionFactory = null; 
    private static Logger logger = Logger.getLogger(HibernateUtils.class.getName()); 

    public static void createSessionFactory() { 

     Configuration configuration = new Configuration().configure(); 
     StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder() 
       .applySettings(configuration.getProperties()); 

     try { 
      sessionFactory = configuration.buildSessionFactory(builder.build()); 
     } catch (Exception exe) { 
      exe.printStackTrace(); 
     } 

     logger.debug("Session factory created"); 
    } 

    public static SessionFactory getSessionFactory() { 

     return sessionFactory; 
    } 

    public static void shutdown() { 

     if (sessionFactory != null) 
      getSessionFactory().close(); 
    } 
} 

использовать следующий основной класс для целей тестирования

class Main { 
    public static void main(String[] args) { 
     HibernateUtils.createSessionFactory(); 
     SessionFactory sessionFactory = HibernateUtils.getSessionFactory(); 

     // do your task 

     HibernateUtils.shutdown(); 
    } 
} 
3

Вместо:

configuration.configure("src/main/resources/hibernate.cfg.xml"); 

Использование:

configuration.configure("/main/resources/hibernate.cfg.xml"); 
3

Держите файл конфигурации под обычным sr сам с каталогом, чтобы не поставить под папку ресурсов

Hibernate config [1]

и передать файл как этот конфигурации Configuration = новой конфигурации();
configuration.configure ("/ hibernate.cfg.xml");

// Здесь я рассмотрел класс конфигурации (HibernateSessionFactory.java) есть в том же пакете

Я надеюсь, что это помогает!