-
Bug
-
Resolution: Duplicate
-
P3
-
None
-
1.1.4
-
x86
-
windows_nt
Name: rm29839 Date: 10/27/97
Given the following code in a directory called com:
package com;
public class loc {
public loc() {}
public java.lang.String toString () {
java.util.ResourceBundle b = java.util.ResourceBundle.getBundle(
"com.loc", java.util.Locale.getDefault());
java.lang.String label;
try {
label = b.getString("Warning");
} catch (java.util.MissingResourceException e) {
label = "problem";
}
return label;
}
}
With the following properties files:
loc.properties:
Warning=Warning
loc_en_US_TX.properties:
Warning=Warnin'
In the parent directory of the above mentioned is a test program
test.java:
import java.util.*;
import java.lang.*;
import java.io.*;
public class test {
private static void getProperties() {
String propsfilename = "myprops";
Properties props = new Properties(System.getProperties());
try {
props.load(new BufferedInputStream(new FileInputStream(p
ropsfilename)));
} catch (IOException e) {}
System.setProperties (props);
Locale.setDefault(new Locale(props.getProperty("test.language"),
props.getProperty("test.country"),
props.getProperty("test.variant")));
}
public static void main(String[] args) {
getProperties();
com.loc a = new com.loc();
System.out.println(a.toString());
}
}
With the following system properties file:
myprops:
test.language=en
test.country=US
test.variant=TX
Running the above programs produces the following errors:
java.lang.ClassCastException: com.loc
at java.util.ResourceBundle.findBundle(ResourceBundle.java)
at java.util.ResourceBundle.getBundle(ResourceBundle.java)
at java.util.ResourceBundle.getBundle(ResourceBundle.java)
at com.loc.toString(Compiled Code)
at test.main(Compiled Code)
If, however, I change the 1st parameter of getBundle in loc.java to "loc"
instead of "com.loc", I get the following error output:
java.util.MissingResourceException: can't find resource for loc_en_US_TX
at java.util.ResourceBundle.getBundle(ResourceBundle.java)
at java.util.ResourceBundle.getBundle(ResourceBundle.java)
at com.loc.toString(Compiled Code)
at test.main(Compiled Code)
Additionally, if the loc*.properties files are moved to the same
directory as test.java, the program works correctly.
It seems that there is a problem with the resolution of the basename in
the first parameter of the getBundle() methdod.
There is no posting of this problem in the known bug list on java.sun.com.
There are some postings of similar problems on comp.lang.java.* but no
solutions/workarounds.
If possible, I would like an update on solutions or workarounds.
test.variant=TX
Running the above programs produces the following errors:
With 2 properties files:
company - Hitachi Telecom , email - ###@###.###
======================================================================
- duplicates
-
JDK-4083270 ResourceBundle.getBundle() does not check for subclass of ResourceBundle
- Resolved