I'm trying to compile an old java application written for java 6. It is a java application with ant. This is the part to create the jar application:
<target name="dist" depends="compile" description="generate the distribution">
<jar destfile="${DESTFILE}" basedir="${basedir}/src">
<exclude name="**/*.java"/>
</jar>
<jar destfile="${DESTFILE}" basedir="${BUILD}" update="true">
<manifest>
<attribute name="Main-Class" value="${Main-Class}"/>
<attribute name="SplashScreen-Image" value="${SplashScreen-Image}"/>
<attribute name="Class-Path" value="${Class-Path}"/>
</manifest>
</jar>
</target>
Class-Path property is:
<property name="Class-Path" value="nttcad/nttcad.jar nttcad/common.jar"/>
nttcad/common.jar"/>
The jar application (cad.jar) has no code: it use the code located into the libraries nttcad/nttcad.jar and nttcad/common.jar.
After many modifications the code is compiled succesfully, but when running an excepion is thrown:
$ /opt/jdk-19/bin/java -jar "cad.jar"
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name nttcad/nttcad/resources/RB, locale it_IT
at java.base/java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2062)
at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1700)
at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1603)
at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1558)
at java.base/java.util.ResourceBundle.getBundle(ResourceBundle.java:864)
at nttcad.common.util.RBObject.<init>(RBObject.java:16)
at nttcad.nttcad.resources.RB.msg(RB.java:13)
at nttcad.nttcad.main.About.show(About.java:87)
at nttcad.nttcad.main.MainListener.createJFrame(MainListener.java:62)
at nttcad.nttcad.Main.createJFrame(Main.java:115)
at nttcad.nttcad.Main.createJFrame(Main.java:105)
at nttcad.nttcad.Main.main(Main.java:31)
Caused by: java.lang.NoClassDefFoundError: IllegalName: nttcad/nttcad/resources/RB
at java.base/java.lang.ClassLoader.preDefineClass(ClassLoader.java:887)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1011)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at java.base/java.util.ResourceBundle$Control.newBundle0(ResourceBundle.java:3187)
at java.base/java.util.ResourceBundle$Control.newBundle(ResourceBundle.java:3168)
at java.base/java.util.ResourceBundle.loadBundle(ResourceBundle.java:2001)
at java.base/java.util.ResourceBundle.findBundle(ResourceBundle.java:1787)
at java.base/java.util.ResourceBundle.findBundle(ResourceBundle.java:1739)
at java.base/java.util.ResourceBundle.findBundle(ResourceBundle.java:1739)
at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1673)
... 10 more
The resource bundle is present:
nttcad/nttcad/resources/RB.properties nttcad/nttcad/resources/RB_it.properties
with a class for using resource bundle:
nttcad/nttcad/resources/RB.java
public class RB {
public static String msg(String key, Object ... arguments)
{
if (s_rb==null)
s_rb = new RBObject("nttcad/nttcad/resources/RB");
return s_rb.msg(key, arguments);
}
private static RBObject s_rb = null;
}
The class RBObject located in common.jar has a constructor that create the resource bundle with the specified basename: the exception is thrown on that line:
public class RBObject {
public RBObject(String baseName)
{
m_resourceBundle = ResourceBundle.getBundle(baseName);
}
...
Can anyone help me?