2013-01-03 54 views
6

我正在寫一個web應用程序,我必須添加休眠。我配置了maven(pom.xml)等,但現在出現以下錯誤:web應用程序 - 在哪裏放置hibernate.cfg.xml文件?

exception 
javax.servlet.ServletException: org.hibernate.HibernateException: /hibernate.cfg.xml not found 

我正在使用NetBeans。我試着將這個文件移動到WEB-INF,根目錄項目文件夾,src目錄(默認包),但它仍然不起作用。我能怎麼做?我不想路徑編程設置爲這個文件是這樣的:

Configuration cfg = new Configuration(); 
cfg.addResource("/some/path/to/this/file/Hibernate.cfg.xml"); 
+0

它應該在classpath的根目錄下。 –

+0

順便說一句:我如何檢查類路徑? – Quak

+0

「check classpath」是什麼意思? –

回答

8

我總是把它變成WEB-INF/classes目錄(編譯後的文件被存儲在那裏)。

+0

謝謝,我在WEB-INF中創建了classes目錄並且工作正常。 – Quak

+0

不客氣;) –

+1

奇怪,你必須創建該目錄。你至少有一門課需要去那裏!如果你在這裏沒有正確使用Netbeans,但我只能猜測。 – Gimby

3

您需要將hibernate.cfg.xml添加到類路徑中的文件夾中。在webb應用程序中,默認情況下,WEB-INF/classes位於類路徑中。您可以使用該文件夾或爲您的資源創建一個新文件夾(假設您希望將它們分開),然後通過調整項目設置將新文件夾設置到classpath中。

1

您可以使用採用hibernateConfig File參數的configure(File configFile)方法從其他目錄(不一定是類路徑)加載hibernate.cfg.xml。 (注意,我正在使用休眠4.3.7)

好處是,您可以將您的休眠配置文件放在一個單獨的目錄中,您必須有權訪問(用於維護或更改目的),而不是捆綁在一起使用您可能無法訪問的.war文件。

實施例如下:


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

該文件必須在應用程序的類路徑的根。這是在WEB-INF/classes下

+0

該文件不一定需要在您的類路徑中。請參閱:http://stackoverflow.com/a/27666320/1547266 – Arthur

相關問題