我有一个java程序,如下所示:
package com.abc.myproject;
import java.util.*;
class test {
public static void main(String[] args)
{
ResourceBundle rb = ResourceBundle.getBundle("mybundle");
String propertyValue = rb.getString("name");
System.out.println("propertyValue="+propertyValue);
}
}
我有这个程序位于 C:\testing\code\src\com\abc\myproject\test.java 下,并且我将 mybundle.properties 保存在 C:\testing\code 文件夹下。
mybundle.properties 包含一行:
name=Mike
当我从命令提示符运行程序时,如下所示,它运行得非常好:
C:\testing\code\src>java -cp .;c:\testing\code com.abc.myproject.test
propertyValue=Mike
现在,我创建了仅包含 test.class 的 Jar 文件 xyz.jar 并将此 Jar 保存在 C:\testing 目录中,并且 jar 的清单包含以下内容:
Manifest-Version: 1.0
Created-By: 1.7.0_05 (Oracle Corporation)
Main-Class: com.abc.myproject.test
在同一目录 C:\testing 中,我保留了 mybundle.properties,然后尝试使用以下命令运行 jar:
java -cp .;c:\testing -jar xyz.jar
但它无法加载 mybundle 资源并抛出错误:
Exception in thread "main" java.util.MissingResourceException: Can't find bundle
for base name scheduler, locale en_US
at java.util.ResourceBundle.throwMissingResourceException(Unknown Source)
at java.util.ResourceBundle.getBundleImpl(Unknown Source)
at java.util.ResourceBundle.getBundle(Unknown Source)
at com.abc.myproject.test.main(test.java:8)
我必须将 mybundle.properties 保留在 Jar 之外,因为我们应该能够在此文件中进行更改而无需重新部署 Jar。
有人可以帮我解决这个问题吗?
谢谢!