IcedTea-Web
IcedTea-Web copied to clipboard
Locale (Internalization) properties files throwing ClassNotFoundExceptions in Console
I have a base properties file(basefile. properties) in the com.x.y.z.properties package, which have a lot of entries in that like com.x.y.z.properties.filename1 com.x.y.z.properties.filename2 com.x.y.z.properties.filename3 com.x.y.z.properties.filename4 ..... .... in the same location, for example, filename1 has 3 sets of properties like filename1_en.properties, filename1_de.properties, and filename1.properties, the similar way we have filename2, and so on. Based on Locale it picks up the file and processes it.
The issue is here when I run the JNLP file using IcedTeaWeb the application is working as expected(all the locale files are loaded properly), but the below errors are coming in the console.
[user-1][ITW-JAVAWS][ERROR_DEBUG][TIME][net.sourceforge.jnlp.runtime.JNLPClassLoader.loadClass(JNLPClassLoader.java:1601)] NETX Thread# 565d9092, name XXXXXXX java.lang.ClassNotFoundException: com.x.y.z.properties.filename1 at net.sourceforge.jnlp.runtime.JNLPClassLoader.loadClassExt(JNLPClassLoader.java:1798) at net.sourceforge.jnlp.runtime.JNLPClassLoader.loadClass(JNLPClassLoader.java:1598) at java.util.ResourceBundle$Control.newBundle(ResourceBundle.java:2657) at java.util.ResourceBundle.loadBundle(ResourceBundle.java:1518) at java.util.ResourceBundle.findBundle(ResourceBundle.java:1482) at java.util.ResourceBundle.findBundle(ResourceBundle.java:1436) at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1370) at java.util.ResourceBundle.getBundle(ResourceBundle.java:782)
java.lang.ClassNotFoundException: com.x.y.z.properties.filename1_en at net.sourceforge.jnlp.runtime.JNLPClassLoader.loadClassExt(JNLPClassLoader.java:1798) at net.sourceforge.jnlp.runtime.JNLPClassLoader.loadClass(JNLPClassLoader.java:1598) at java.util.ResourceBundle$Control.newBundle(ResourceBundle.java:2657) at java.util.ResourceBundle.loadBundle(ResourceBundle.java:1518) at java.util.ResourceBundle.findBundle(ResourceBundle.java:1482) at java.util.ResourceBundle.findBundle(ResourceBundle.java:1436) at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1370) at java.util.ResourceBundle.getBundle(ResourceBundle.java:782) ................ ................ and so on
My questions are
- Since the application is working as expected, why these are errors simply thrown in the log? somehow these errors create confusion for users.
- is there any way we can remove these errors?
- why it's treating as a class for properties file?
- is this a bug in IcedTeaWeb while loading Locale specific properties file?
Thanks
Yes, ITW is a bit verbose at this point. The ClassNotFound are normal behavior as resources have defined fallback strategies. Therefore Java is trying to load one after another until it finds a resource. For all others a ClassNotFound is thrown.