Hello folks, revisiting, still present. After having a deeper look I found the problem ... took almost 14 years :| It's basically a reincarnation of bug 7881 ("JRE 1.3.1: RuntimeException in sun.awt.Win32GraphicsDevice.getDefaultPixIDImpl(Native Method)") which was not properly fixed / validated. The problem is not easy to spot with the installers because the root cause was not visible and the late error was just a manifestation of a general problem much earlier. After first failure one can run the inner installer and pass additional arguments (class loader/jni -> more verbosity): --- snip --- $ wine "c:\temp\Windows\resource\jre\bin\javaw.exe" \ -Xms16777216 -Xmx50331648 -verbose:class -verbose:jni \ -classpath "c:\temp\InstallerData\IAClasses.zip;c:\temp\Windows\resource\jdglue.zip;c:\temp\InstallerData\Execute.zip;c:\temp\Windows\InstallerData\Execute.zip;c:\temp\InstallerData\Resource1.zip;c:\temp\Windows\InstallerData\Resource1.zip;c:\temp\InstallerData;c:\temp\Windows\InstallerData;" \ com.zerog.lax.LAX "c:/temp/Windows/Setup.lax" \ "C:/users/$USER/Temp/lax29d1.tmp" ... [Loaded sun.java2d.SunGraphicsEnvironment from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded sun.awt.Win32GraphicsEnvironment from c:\temp\Windows\resource\jre\lib\rt.jar] [Dynamic-linking native method sun.awt.Win32GraphicsEnvironment.initDisplay ... JNI] [Loaded java.util.SortedMap from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded java.util.TreeMap from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded sun.java2d.SunGraphicsEnvironment$1 from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded sun.awt.font.NativeFontWrapper from c:\temp\Windows\resource\jre\lib\rt.jar] [Dynamic-linking native method sun.awt.font.NativeFontWrapper.getType1FontVar ... JNI] [Dynamic-linking native method sun.awt.font.NativeFontWrapper.getFontPath ... JNI] [Loaded sun.awt.FontProperties from c:\temp\Windows\resource\jre\lib\rt.jar] [Dynamic-linking native method java.io.WinNTFileSystem.checkAccess ... JNI] [Loaded java.util.TreeMap$Entry from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded java.util.Hashtable$KeySet from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded java.util.Collections$SynchronizedCollection from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded java.util.Collections$SynchronizedSet from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded java.io.FilenameFilter from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded sun.java2d.SunGraphicsEnvironment$TTFilter from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded java.util.TreeMap$1 from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded java.util.TreeMap$Iterator from c:\temp\Windows\resource\jre\lib\rt.jar] [Dynamic-linking native method sun.awt.font.NativeFontWrapper.registerCompositeFont ... JNI] [Dynamic-linking native method sun.awt.Win32GraphicsEnvironment.getNumScreens ... JNI] [Loaded java.awt.GraphicsDevice from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded sun.awt.Win32GraphicsDevice from c:\temp\Windows\resource\jre\lib\rt.jar] [Dynamic-linking native method sun.awt.Win32GraphicsDevice.initIDs ... JNI] [Dynamic-linking native method sun.awt.Win32GraphicsEnvironment.getDefaultScreen ... JNI] [Dynamic-linking native method sun.awt.Win32GraphicsDevice.getDefaultPixIDImpl ... JNI] [Loaded ZeroGae] [Loaded ZeroGah] [Loaded ZeroGny] [Loaded ZeroGh] [Loaded ZeroGag] [Loaded java.lang.UnsatisfiedLinkError from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded com.zerog.ia.platform.SysJD] [Loaded java.util.Observer from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded ZeroGde] ... [Loaded java.awt.Cursor from c:\temp\Windows\resource\jre\lib\rt.jar] [Dynamic-linking native method java.awt.Cursor.initIDs ... JNI] [Loaded java.awt.geom.Point2D from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded java.awt.Point from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded sun.awt.GlobalCursorManager from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded java.awt.AWTEvent from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded java.awt.ActiveEvent from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded java.awt.event.InvocationEvent from c:\temp\Windows\resource\jre\lib\rt.jar] [Loaded sun.awt.GlobalCursorManager$CursorEvent from c:\temp\Windows\resource\jre\lib\rt.jar] [Dynamic-linking native method java.awt.AWTEvent.initIDs ... JNI] [Dynamic-linking native method java.lang.Throwable.printStackTrace0 ... JNI] [Loaded com.zerog.ia.installer.IAStatus] [Loaded ZeroGdk] [Loaded com.zerog.ia.installer.IAStatusLog] [Dynamic-linking native method java.io.FileOutputStream.writeBytes ... JNI] Invocation of this Java Application has caused an InvocationTargetException. This application will now exit. (LAX) Stack Trace: java.lang.NoClassDefFoundError at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at java.awt.Toolkit$2.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Toolkit.getDefaultToolkit(Unknown Source) at sun.awt.GlobalCursorManager$CursorEvent.(Unknown Source) at sun.awt.GlobalCursorManager.(Unknown Source) at java.awt.Cursor.initIDs(Native Method) at java.awt.Cursor.(Unknown Source) at java.awt.Window.(Unknown Source) at java.awt.Frame.(Unknown Source) at java.awt.Frame.(Unknown Source) at com.zerog.ia.installer.LifeCycleManager.f(DashoA8113) at com.zerog.ia.installer.LifeCycleManager.g(DashoA8113) at com.zerog.ia.installer.LifeCycleManager.a(DashoA8113) at com.zerog.ia.installer.Main.main(DashoA8113) at java.lang.reflect.Method.invoke(Native Method) at com.zerog.lax.LAX.launch(DashoA8113) at com.zerog.lax.LAX.main(DashoA8113) [Loaded ZeroGa0] [Loaded ZeroGap] ... This Application has Unexpectedly Quit: Invocation of this Java Application has caused an InvocationTargetException. This application will now exit. (LAX) --- snip --- I've debugged it (native, no jdb) and at the point before of the java exception the class loader couldn't load/resolve 'sun.awt.windows.WToolkit' class for unknown reasons even though it had been previously loaded. Suspecting it has something to do with the graphics subsystem I wrote a small java app and compiled it using a matching JDK. http://download.oracle.com/otn/java/j2sdk/1.3.0_03/j2sdk-1_3_0_03-win.exe Stable link via Internet Archive: https://web.archive.org/web/20201130115841/https://isis-data.science.uva.nl/koelma/horus/third/java/j2sdk-1_3_0_03-win.exe --- snip --- // compile: wine "c:\\jdk1.3.0_03\\bin\\javac.exe" -g GraphicsTest.java // run: wine "c:\\jdk1.3.0_03\\bin\\java.exe" GraphicsTest import java.awt.*; public class GraphicsTest { public static void main(String[] args) { GraphicsEnvironment ge = GraphicsEnvironment. getLocalGraphicsEnvironment(); GraphicsDevice[] gs = ge.getScreenDevices(); for (int j = 0; j < gs.length; j++) { System.err.println("Getting config for " + gs[j].getIDstring()); long startTime = System.currentTimeMillis() ; GraphicsConfiguration[] gc = gs[j].getConfigurations(); System.err.println("Finished in " + (System.currentTimeMillis() - startTime) + " milliseconds"); } } } --- snip --- Voila: --- snip --- $ wine "c:\\jdk1.3.0_03\\bin\\java.exe" GraphicsTest Getting config for \Display0 Exception in thread "main" java.lang.RuntimeException: Unable to create a suitable default GraphicsConfiguration. Try changing your Display Settings. at sun.awt.Win32GraphicsDevice.getDefaultPixID(Native Method) at sun.awt.Win32GraphicsDevice.getConfigurations(Win32GraphicsDevice.java:73) at GraphicsTest.main(GraphicsTest.java:17) --- snip --- A surprise indeed as this should have been fixed a long time ago. Looking at sources (might not fully match the old Sun JRE but: https://github.com/srisatish/openjdk/blob/6ffc2d129dbe05c358663364e705393c2d7322a1/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp#L914 --- snip --- ... /** * End of static deviceIndex-based methods */ const DWORD REQUIRED_FLAGS = ( //Flags which must be set in PFD_SUPPORT_GDI | //in the PixelFormatDescriptor. PFD_DRAW_TO_WINDOW); //Used to choose the default config //and to check formats in //isPixFmtSupported() ... /* * Class: sun_awt_Win32GraphicsDevice * Method: isPixFmtSupported * Signature: (I)Z */ JNIEXPORT jboolean JNICALL Java_sun_awt_Win32GraphicsDevice_isPixFmtSupported (JNIEnv* env, jobject theThis, jint pixFmtID, jint screen) { TRY; jboolean suppColor = JNI_TRUE; HDC hDC = AwtWin32GraphicsDevice::GetDCFromScreen(screen); if (pixFmtID == 0) { return true; } PIXELFORMATDESCRIPTOR pfd; int max = ::DescribePixelFormat(hDC, (int)pixFmtID, sizeof(PIXELFORMATDESCRIPTOR), &pfd); DASSERT(max); //Check for supported ColorModel if ((pfd.cColorBits < 8) || ((pfd.cColorBits == 8) && (pfd.iPixelType != PFD_TYPE_COLORINDEX))) { //Note: this still allows for PixelFormats with > 8 color bits //which use COLORINDEX instead of RGB. This seems to work fine, //although issues may crop up involving PFD_NEED_PALETTE, which //is not currently taken into account. //If changes are made, they should also be reflected in //getDefaultPixID. suppColor = JNI_FALSE; } if (hDC != NULL) { VERIFY(::DeleteDC(hDC)); hDC = NULL; } return (((pfd.dwFlags & REQUIRED_FLAGS) == REQUIRED_FLAGS) && suppColor) ? JNI_TRUE : JNI_FALSE; CATCH_BAD_ALLOC_RET(FALSE); } /* * Class: sun_awt_Win32GraphicsDevice * Method: getDefaultPixIDImpl * Signature: (I)I */ JNIEXPORT jint JNICALL Java_sun_awt_Win32GraphicsDevice_getDefaultPixIDImpl (JNIEnv* env, jobject theThis, jint screen) { TRY; int pixFmtID = 0; HDC hDC = AwtWin32GraphicsDevice::GetDCFromScreen(screen); PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), 1, //version REQUIRED_FLAGS, //flags 0, //iPixelType 0, //cColorBits 0,0,0,0,0,0,0,0, //cRedBits, cRedShift, green, blue, alpha 0,0,0,0,0, //cAccumBits, cAccumRedBits, green, blue, alpha 0,0,0,0,0,0,0,0 //etc. }; //If 8-bit mode, must use Indexed mode if (8 == ::GetDeviceCaps(hDC, BITSPIXEL)) { pfd.iPixelType = PFD_TYPE_COLORINDEX; } pixFmtID = ::ChoosePixelFormat(hDC, &pfd); if (pixFmtID == 0) { //Return 0 if GDI call fails. if (hDC != NULL) { VERIFY(::DeleteDC(hDC)); hDC = NULL; } return pixFmtID; } if (JNI_FALSE == Java_sun_awt_Win32GraphicsDevice_isPixFmtSupported( env, theThis, pixFmtID, screen)) { /* Can't find a suitable pixel format ID. Fall back on 0. */ pixFmtID = 0; } VERIFY(::DeleteDC(hDC)); hDC = NULL; return (jint)pixFmtID; CATCH_BAD_ALLOC_RET(0); } ... --- snip --- nvidia: --- snip --- $ WINEDEBUG=+seh,+x11drv,+wgl,+winediag wine "c:\\jdk1.3.0_03\\bin\\java.exe" GraphicsTest >>log_nvidia.txt 2>&1 ... 0338:trace:wgl:init_pixel_formats Found onscreen format FBCONFIG_ID 0x14b corresponding to iPixelFormat 5 at GLX index 4 0338:trace:wgl:init_pixel_formats Found bitmap capable format FBCONFIG_ID 0x14b corresponding to iPixelFormat 6 at GLX index 4 ... 0338:trace:wgl:dump_PIXELFORMATDESCRIPTOR size 40 version 1 flags 37 type 0 color 32 8,8,8,8 accum 64 depth 24 stencil 8 aux 4 PFD_DOUBLEBUFFER PFD_DRAW_TO_WINDOW PFD_SUPPORT_OPENGL 0338:trace:wgl:glxdrv_wglDescribePixelFormat (0x10044,5,40,0x31f988) 0338:trace:wgl:get_pixel_format Returning fmt_id=0x14b for iPixelFormat=5 ... 0338:trace:wgl:dump_PIXELFORMATDESCRIPTOR size 40 version 1 flags 36 type 0 color 24 8,8,8,0 accum 64 depth 24 stencil 8 aux 4 PFD_DRAW_TO_WINDOW PFD_SUPPORT_OPENGL 0338:trace:wgl:glxdrv_wglDescribePixelFormat (0x10044,6,40,0x31f988) 0338:trace:wgl:get_pixel_format Returning fmt_id=0x14b for iPixelFormat=6 0338:trace:wgl:dump_PIXELFORMATDESCRIPTOR size 40 version 1 flags 124 type 0 color 24 8,8,8,0 accum 64 depth 24 stencil 8 aux 4 PFD_DRAW_TO_WINDOW PFD_DRAW_TO_BITMAP PFD_GENERIC_FORMAT PFD_SUPPORT_GDI PFD_SUPPORT_OPENGL 0338:trace:wgl:wglChoosePixelFormat PFD_DRAW_TO_BITMAP mismatch for iPixelFormat=6 ... 0338:trace:wgl:wglChoosePixelFormat returning 5 0338:trace:wgl:glxdrv_wglDescribePixelFormat (0x10045,5,40,0x31f99c) 0338:trace:wgl:get_pixel_format Returning fmt_id=0x14b for iPixelFormat=5 0338:trace:wgl:dump_PIXELFORMATDESCRIPTOR size 40 version 1 flags 36 type 0 color 24 8,8,8,0 accum 64 depth 24 stencil 8 aux 4 PFD_DRAW_TO_WINDOW PFD_SUPPORT_OPENGL java.lang.RuntimeException: Unable to create a suitable default GraphicsConfiguration. Try changing your Display Settings. at sun.awt.Win32GraphicsDevice.getDefaultPixID(Native Method) at sun.awt.Win32GraphicsDevice.getConfigurations(Win32GraphicsDevice.java:73) at GraphicsTest.main(GraphicsTest.java:13) Exception in thread "main" --- snip --- Intel/Mesa: --- snip --- $ WINEDEBUG=+seh,+x11drv,+wgl,+winediag wine "c:\\jdk1.3.0_03\\bin\\java.exe" GraphicsTest >>log_mesa.txt 2>&1 ... 035c:trace:wgl:init_pixel_formats Found onscreen format FBCONFIG_ID 0x264 corresponding to iPixelFormat 2 at GLX index 5 ... 035c:trace:wgl:dump_PIXELFORMATDESCRIPTOR size 40 version 1 flags 37 type 0 color 32 8,8,8,8 accum 0 depth 0 stencil 0 aux 0 PFD_DOUBLEBUFFER PFD_DRAW_TO_WINDOW PFD_SUPPORT_OPENGL 035c:trace:wgl:glxdrv_wglDescribePixelFormat (0x10044,2,40,0x31f988) 035c:trace:wgl:get_pixel_format Returning fmt_id=0x264 for iPixelFormat=2 ... 035c:trace:wgl:dump_PIXELFORMATDESCRIPTOR size 40 version 1 flags 124 type 0 color 32 8,8,8,8 accum 0 depth 0 stencil 0 aux 0 PFD_DRAW_TO_WINDOW PFD_DRAW_TO_BITMAP PFD_GENERIC_FORMAT PFD_SUPPORT_GDI PFD_SUPPORT_OPENGL 035c:trace:wgl:wglChoosePixelFormat PFD_DRAW_TO_BITMAP mismatch for iPixelFormat=3 035c:trace:wgl:glxdrv_wglDescribePixelFormat (0x10044,4,40,0x31f988) 035c:trace:wgl:get_pixel_format Returning fmt_id=0x265 for iPixelFormat=4 ... 035c:trace:wgl:wglChoosePixelFormat returning 2 035c:trace:wgl:glxdrv_wglDescribePixelFormat (0x10045,2,40,0x31f99c) 035c:trace:wgl:get_pixel_format Returning fmt_id=0x264 for iPixelFormat=2 035c:trace:wgl:dump_PIXELFORMATDESCRIPTOR size 40 version 1 flags 36 type 0 color 32 8,8,8,8 accum 0 depth 0 stencil 0 aux 0 PFD_DRAW_TO_WINDOW PFD_SUPPORT_OPENGL java.lang.RuntimeException: Unable to create a suitable default GraphicsConfiguration. Try changing your Display Settings. at sun.awt.Win32GraphicsDevice.getDefaultPixID(Native Method) at sun.awt.Win32GraphicsDevice.getConfigurations(Win32GraphicsDevice.java:73) at GraphicsTest.main(GraphicsTest.java:13) Exception in thread "main" --- snip --- https://source.winehq.org/git/wine.git/blob/cbca9f847f60773b4e7e5408f6a079f4896c5c1e:/include/wingdi.h#l90 --- snip --- ... 90 #define PFD_DOUBLEBUFFER 0x00000001 91 #define PFD_STEREO 0x00000002 92 #define PFD_DRAW_TO_WINDOW 0x00000004 93 #define PFD_DRAW_TO_BITMAP 0x00000008 94 #define PFD_SUPPORT_GDI 0x00000010 95 #define PFD_SUPPORT_OPENGL 0x00000020 96 #define PFD_GENERIC_FORMAT 0x00000040 ... --- snip --- To recap from above JDK snippets: --- snip --- PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), 1, //version REQUIRED_FLAGS, //flags 0, //iPixelType 0, //cColorBits 0,0,0,0,0,0,0,0, //cRedBits, cRedShift, green, blue, alpha 0,0,0,0,0, //cAccumBits, cAccumRedBits, green, blue, alpha 0,0,0,0,0,0,0,0 //etc. }; --- snip -- REQUIRED_FLAGS = PFD_SUPPORT_GDI (16) | PFD_DRAW_TO_WINDOW (4) = 20 = 0x14 https://source.winehq.org/git/wine.git/blob/cbca9f847f60773b4e7e5408f6a079f4896c5c1e:/dlls/opengl32/wgl.c#l448 --- snip --- 448 /*********************************************************************** 449 * wglChoosePixelFormat (OPENGL32.@) 450 */ 451 INT WINAPI wglChoosePixelFormat(HDC hdc, const PIXELFORMATDESCRIPTOR* ppfd) 452 { 453 PIXELFORMATDESCRIPTOR format, best; 454 int i, count, best_format; 455 int bestDBuffer = -1, bestStereo = -1; 456 457 TRACE_(wgl)( "%p %p: size %u version %u flags %u type %u color %u %u,%u,%u,%u " 458 "accum %u depth %u stencil %u aux %u\n", 459 hdc, ppfd, ppfd->nSize, ppfd->nVersion, ppfd->dwFlags, ppfd->iPixelType, 460 ppfd->cColorBits, ppfd->cRedBits, ppfd->cGreenBits, ppfd->cBlueBits, ppfd->cAlphaBits, 461 ppfd->cAccumBits, ppfd->cDepthBits, ppfd->cStencilBits, ppfd->cAuxBuffers ); 462 463 count = wglDescribePixelFormat( hdc, 0, 0, NULL ); 464 if (!count) return 0; 465 466 best_format = 0; 467 best.dwFlags = 0; 468 best.cAlphaBits = -1; 469 best.cColorBits = -1; 470 best.cDepthBits = -1; 471 best.cStencilBits = -1; 472 best.cAuxBuffers = -1; 473 474 for (i = 1; i <= count; i++) 475 { 476 if (!wglDescribePixelFormat( hdc, i, sizeof(format), &format )) continue; 477 478 if ((ppfd->iPixelType == PFD_TYPE_COLORINDEX) != (format.iPixelType == PFD_TYPE_COLORINDEX)) 479 { 480 TRACE( "pixel type mismatch for iPixelFormat=%d\n", i ); 481 continue; 482 } 483 484 /* only use bitmap capable for formats for bitmap rendering */ 485 if( (ppfd->dwFlags & PFD_DRAW_TO_BITMAP) != (format.dwFlags & PFD_DRAW_TO_BITMAP)) 486 { 487 TRACE( "PFD_DRAW_TO_BITMAP mismatch for iPixelFormat=%d\n", i ); 488 continue; 489 } ... 590 if (ppfd->cAuxBuffers) 591 { 592 if (((ppfd->cAuxBuffers > best.cAuxBuffers) && (format.cAuxBuffers > best.cAuxBuffers)) || 593 ((format.cAuxBuffers >= ppfd->cAuxBuffers) && (format.cAuxBuffers < best.cAuxBuffers))) 594 goto found; 595 596 if (best.cAuxBuffers != format.cAuxBuffers) 597 { 598 TRACE( "aux mismatch for iPixelFormat=%d\n", i ); 599 continue; 600 } 601 } 602 continue; 603 604 found: 605 best_format = i; 606 best = format; 607 bestDBuffer = format.dwFlags & PFD_DOUBLEBUFFER; 608 bestStereo = format.dwFlags & PFD_STEREO; 609 } 610 611 TRACE( "returning %u\n", best_format ); 612 return best_format; 613 } --- snip --- I think if 'PFD_SUPPORT_GDI' flag is passed to 'wglChoosePixelFormat' and the available pixelformat doesn't support 'PFD_SUPPORT_GDI' it should skip the format as candidate (no match) -> resulting in Java pixFmtID == 0 case (uses fallback). I've tested this and it made the installer(s) work. I'm not an expert on this topic though, maybe one Wine x11/opengl dev has an idea what's the correct way. This will fix the startup of various installers using Java/AWT. $ wine --version wine-5.22 Regards