JDK里有个例子是这样的:
ResourceBundle myResources =
ResourceBundle.getBundle("MyResources", currentLocale);
public class MyResources extends ListResourceBundle {
public Object[][] getContents() {
return contents;
}
static final Object[][] contents = {
// LOCALIZE THIS
{"OkKey", "OK"},
{"CancelKey", "Cancel"},
// END OF MATERIAL TO LOCALIZE
};
}
ResourceBundle.getBundle("MyResources", currentLocale)中的"MyResources"就是MyResources.java的类名,但这个方法是如何找到MyResources.java这个类的呢? getBundle是用ClassLoader来加载相应的类的。
它会在ClassPath中去查找指定的类。如何在ECLIPSE中设置classpath解决此问题?
ResourceBundle myResources =
ResourceBundle.getBundle("MyResources", currentLocale);
public class MyResources extends ListResourceBundle {
public Object[][] getContents() {
return contents;
}
static final Object[][] contents = {
// LOCALIZE THIS
{"OkKey", "OK"},
{"CancelKey", "Cancel"},
// END OF MATERIAL TO LOCALIZE
};
}
ResourceBundle.getBundle("MyResources", currentLocale)中的"MyResources"就是MyResources.java的类名,但这个方法是如何找到MyResources.java这个类的呢? getBundle是用ClassLoader来加载相应的类的。
它会在ClassPath中去查找指定的类。如何在ECLIPSE中设置classpath解决此问题?
package com.test;import java.util.ResourceBundle;
public class testload { public static String aaa = testload.getDesc("test");
private static ResourceBundle currentResources = null;
public static String getDesc(String errDesc){
if(currentResources == null){
init();
}
return currentResources.getString(errDesc);
} private static void init(){ currentResources = ResourceBundle.getBundle("com.test.resource");
}
public static void main(String[] args) {
System.out.println(aaa); }}
形如MyResource<*>.properties文件名,如MyResource_zh_CN.properties
具体的文件名后缀要由currentLocale决定
这个properties文件里是形如
val1=value of val1
val2=value of val2
格式的字符串可以通过myResource.getString("val1")来取得val1的值Eclipse里的工程属性里的Output Folder会自动加在classpath里
普通的JAVA工程。如何搞?