AdoptOpenJDK / IcedTea-Web

The new home for IcedTea-Web
Other
225 stars 87 forks source link

Locale (Internalization) properties files throwing ClassNotFoundExceptions in Console #852

Open UmaSiri opened 2 years ago

UmaSiri commented 2 years ago

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

1) Since the application is working as expected, why these are errors simply thrown in the log? somehow these errors create confusion for users. 2) is there any way we can remove these errors? 3) why it's treating as a class for properties file? 3) is this a bug in IcedTeaWeb while loading Locale specific properties file?

Thanks

sclassen commented 2 years ago

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.