2011-11-19 65 views
12

Tôi mới đến Hibernate, đọc cuốn sách này "Java kiên trì với Hibernate" và tôi đang cố gắng thực hiện ví dụ từ đó. Cho đến nay xây dựng Ant của tôi là thành công, nhưng khi tôi cố gắng thực hiện các lớp chứa phương thức main Tôi nhận được thông báo lỗi này:hibernate.cfg.xml không tìm thấy

19-Nov-2011 18:40:09 org.hibernate.cfg.Environment <clinit> 
INFO: Hibernate 3.2.3 
19-Nov-2011 18:40:09 org.hibernate.cfg.Environment <clinit> 
INFO: hibernate.properties not found 
19-Nov-2011 18:40:09 org.hibernate.cfg.Environment buildBytecodeProvider 
INFO: Bytecode provider name : cglib 
19-Nov-2011 18:40:09 org.hibernate.cfg.Environment <clinit> 
INFO: using JDK 1.4 java.sql.Timestamp handling 
19-Nov-2011 18:40:09 org.hibernate.cfg.Configuration configure 
INFO: configuring from resource: /hibernate.cfg.xml 
19-Nov-2011 18:40:09 org.hibernate.cfg.Configuration getConfigurationInputStream 
INFO: Configuration resource: /hibernate.cfg.xml 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    at persistence.HibernateUtil.<clinit>(Unknown Source) 
    at hello.Driver.main(Unknown Source) 
Caused by: org.hibernate.HibernateException: /hibernate.cfg.xml not found 
    at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:147) 
    at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:1405) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1427) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1414) 
    ... 2 more 

Rõ ràng là chế độ ngủ đông không thể tìm thấy tập tin cấu hình của tôi, mà nằm trong thư mục gốc.

Dự án

+lib 
<all required libraries> 
+src 
    +hello 
    HelloWorld.java 
    Message.java 
    message.hbm.xml 
    +persistence 
    HibernateUtil.java 
build.xml 
hibernate.cfg.xml 

My toàn bộ mã nguồn có thể được tìm thấy ở đây: http://pastebin.com/bGDUrxUf

Tôi có một máy chủ MySQL chạy với một cơ sở dữ liệu và các thông điệp hibernateapp bảng

Cảm ơn :)

Trả lời

15

hibernate.cfg.xml cần nằm trong thư mục src; nếu không nó không được bao phủ bởi mục tiêu copymetafiles của Ant, vì vậy nó sẽ không kết thúc trong classpath đã biên dịch của bạn.

+0

tôi đã di chuyển nó đến src, biên dịch sử dụng kiến ​​và chạy lớp giữ phương pháp chính là ứng dụng Java và có những lỗi giống nhau không? Tôi có cần đặt một số GLOBAL PATH không? – greenLizard

+0

@Agop: Đảm bảo rằng nó kết thúc trong thư mục gốc của một thư mục trên đường dẫn lớp của bạn. Ví dụ: nếu bạn đang chạy 'java -classpath lib/foo.jar: lib/bar.jar :. hello.HelloWorld', sau đó bạn cần chắc chắn rằng nó kết thúc bằng '.'. – ruakh

+0

Tôi đang chạy nó bằng cách sử dụng Eclipse, vì vậy tôi tin rằng đường dẫn lớp nên được tốt? – greenLizard

4

Nó không nên nằm trong thư mục gốc của bạn, nó phải nằm trên đường dẫn lớp của bạn.

15

Tệp hibernate.cfg.xml shoul nằm trong thư mục gốc của đường dẫn lớp của dự án của bạn. Nếu bạn sử dụng Maven thì hãy đảm bảo nó giống như src> resources> hibernate.cfg.xml.

2

Bạn có thể tải hibernate.cfg.xml từ một thư mục khác (không nhất thiết là đường dẫn lớp) bằng phương pháp configure(File configFile) có tham số hibernateConfigFile. (lưu ý, tôi đang sử dụng Hibernate 4.3.7)

Như thế này:


String hibernatePropsFilePath = "/etc/configs/hibernate.cfg.xml"; 

File hibernatePropsFile = new File(hibernatePropsFilePath); 

Configuration configuration = new Configuration(); 
configuration.configure(hibernatePropsFile); 

StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()); 

ServiceRegistry serviceRegistry = serviceRegistryBuilder.build(); 

SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry); 
0

Mặc dù nó là muộn, Giải pháp là bạn cần phải đặt tập tin cấu hình này bên trong thư mục tài nguyên (projectxxxx -> Tài nguyên) cung cấp một dự án maven của nó.

1

Nếu bạn đang làm việc trên Intellij Idea thì hãy tạo một thư mục có tên là "resources" dưới src \ main \ java. Mở cài đặt Mô-đun của dự án của bạn, chọn "Mô-đun" từ bên trái và trong tab "nguồn", chọn thư mục "tài nguyên" mới được tạo và đánh dấu nó là "Tài nguyên". enter image description here

thì đây nên làm việc

Configuration con = new Configuration().configure("hibernate.cfg.xml");