這是我們將應用程序從當前生產環境遷移到新數據中心環境時面臨的另一個問題(請參閱下面詳細說明)Java 1.5,Java EE 5,WAS 6.1:使用ResourceBundle.getBundle加載資源包的例外(...)
- 當前生產環境:Java 1.4中的Java EE 3,爲5.1,JSF 2.1
- 新環境:爪哇1.5,Java EE 5中,WAS 6.1,JSF 2.1
這裏我們有以下結構的第三方jar文件(檢查圖像 - 原諒我隱藏了一些細節)
alt text http://i43.tinypic.com/fxdqo0.jpg
這個類的代碼從資源(db.properties)加載數據庫屬性。以下是由Cavaj提供的代碼:
private static ResourceBundle getDBProperties() { if(dbProperties == null) { dbProperties = ResourceBundle.getBundle("db"); } return dbProperties; }
此應用程序在當前環境中運行良好。但不知何故,當我們移動應用到新的環境中,我們得到一個「MissingResourceException異常」(見下圖):
Caused by: java.util.MissingResourceException: Can't find bundle for base name db, locale en_US at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:863) at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:832) at java.util.ResourceBundle.getBundle(ResourceBundle.java:576) at com.myco.wo.vs.util.OrderLovUtilities.getDBProperties(OrderLovUtilities.java:195)
我們嘗試以下解決方法,但沒有工作:
- 改名爲db.properties db_en_US.properties
- 將屬性文件放入罐子中將EAR級別的罐子文件移動到罐子中
- 。
請在這裏提出可能的錯誤建議。我們可以做些什麼來使其工作:)
注意:文件db.properties位於WEB-INF/classes目錄下。我們也嘗試將它放在上述位置,但無濟於事。
問候,
- 阿希什
我在猜測你的意思是JSF 1.2:http://java.sun.com/javaee/javaserverfaces/reference/api/index.html – McDowell 2009-05-01 19:17:43
db.properties位於你的應用程序中的位置? – McDowell 2009-05-01 19:20:37
資源包用於特定於語言環境的消息和標籤。你的數據庫是特定於語言環境的嗎?我原以爲這就是JNDI的目的。這似乎是我的數據庫屬性錯誤的地方。這種方式不可能合併。 – duffymo 2009-05-01 22:07:11