I tried to debug and trace the startup process of a certain example in Minie to see where it got stuck. I found that the issue lies in the initialization of the DesktopAssetManager. Specifically, when initializing the AWTLoader, this class declares a static variable called AWT_RGBA4444.
package com.jme3.texture.plugins;
public class AWTLoader implements AssetLoader {
public static final ColorModel AWT_RGBA4444 = new DirectColorModel(16,
0xf000,
0x0f00,
0x00f0,
0x000f);
When java.awt.image.DirectColorModel
is instantiated, it executes the static block of code in ColorModel.
package java.awt.image;
public abstract class ColorModel implements Transparency{
static void loadLibraries() {
if (!loaded) {
java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction<Void>() {
public Void run() {
System.loadLibrary("awt");
return null;
}
});
loaded = true;
}
}
}
This piece of code ultimately causes the entire application to freeze and the screen to turn black.
package java.security;
public final class AccessController {
@CallerSensitive
public static native <T> T doPrivileged(PrivilegedAction<T> action);
}
I change JDK from 1.8 to 17.0.2, the native method doPrivileged
become a common static method:
package java.security;
@Deprecated(since="17", forRemoval=true)
public final class AccessController {
@CallerSensitive
public static <T> T doPrivileged(PrivilegedAction<T> action)
{
return executePrivileged(action, null, Reflection.getCallerClass());
}
}
and Minie example works.
but my problem is still.