2014-02-20 81 views
4

我使用名爲jnca的庫來捕獲從路由器發送的netflow udp數據包。.MissingResourceException:無法找到基本名稱的包

當它被導入IntellijIDea中的一個新項目時,它可以工作。

JNCA

投注時使用Maven項目不會在裏面工作並給出了此異常。

jnca

例外:

java.util.MissingResourceException: Can't find bundle for base name org.wso2.event.adaptor.udp.jnca.etc.NetFlow, locale en_US 
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1499) 
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1322) 
at java.util.ResourceBundle.getBundle(ResourceBundle.java:795) 
at org.wso2.event.adaptor.udp.jnca.cai.utils.Resources.<init>(Resources.java:24) 
at org.wso2.event.adaptor.udp.jnca.cai.flow.collector.Collector.<clinit>(Collector.java:51) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:190) 
at org.wso2.event.adaptor.udp.jnca.cai.flow.collector.Run.<clinit>(Run.java:14) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:190) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:113) 
NetFlow.properties: Can't find bundle for base name org.wso2.event.adaptor.udp.jnca.etc.NetFlow, locale en_US 

沒有包命名的問題。

問題是與此代碼段

 try { 

     resources = ResourceBundle.getBundle("org.wso2.event.adaptor.udp.jnca.etc." + myName, Locale 
              .getDefault()); 
    } catch (MissingResourceException exc) { 
     exc.printStackTrace(); 
     error(SuperString.exceptionMsg(exc.toString())); 
    } 

MYNAME = Netflow的

我試圖改變的路徑資源,但沒有奏效。 並試圖包括netflow.properties文件Maven項目的資源文件夾裏面也沒有工作

如何解決這個

謝謝

+0

嘗試http://stackoverflow.com/questions/333363/loading-a-properties-file-from-java-包 – Sanjeev

回答

8

當使用Maven,屬性文件應位於的src/main /資源裏面沒有的src/main/java中(見here

所以,舉例來說,如果你有按照你的faces-config.xml中定義(使用您的facelet頁面封郵件變量):

<resource-bundle> 
     <base-name>i18n.PanneauPrincipal</base-name> 
     <var>msgs</var> 
    </resource-bundle> 

或者,如果您以編程方式加載資源文件:

ResourceBundle bundle = ResourceBundle.getBundle("i18n.PanneauPrincipal", locale); 

然後PanneauPrincipal_en.properties文件應位於以下目錄:

src/main/resources/i18n 
+0

感謝您回答這個問題。將我的軟件包移到我的src/main/resources中修復了我遇到的同一問題。這應該是對這個問題的接受答案。 –

0

您的.properties文件複製到資源文件夾中根(不在包內) 然後在你的代碼中當你想訪問這些.properties文件時,不會提到任何包名。只需要.properties文件的名稱就夠了。 這樣的:

resources = ResourceBundle.getBundle(myName, Locale.getDefault()); 
相關問題