On 2015-01-19 09:39, Mads Bondo Dydensborg wrote:
Hi there
As written about earlier, I have compiled OpenJDK on Windows 7 64 bit, using
Visual Studio 2010 Express SP 1, under Cygwin. (eventually: make clean images).
AFAIK, VS Express will only build a 32 bit image, and has done. A simple
HelloWorld test seems to work. However, if I try to run anything graphical, I
get a linker error regarding Freetype:
mbd@LT01666
~/Compile/openjdk-8-src-b132-03_mar_2014/openjdk/build/windows-x86-normal-server-release/images/j2sdk-image/demo/jfc/FileChooserDemo
$ ../../../bin/java.exe -jar FileChooserDemo.jar
jan. 19, 2015 8:39:41 AM FileChooserDemo main
SEVERE: null
java.lang.reflect.InvocationTargetException
at java.awt.EventQueue.invokeAndWait(EventQueue.java:1300)
at java.awt.EventQueue.invokeAndWait(EventQueue.java:1275)
at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1348)
at FileChooserDemo.main(FileChooserDemo.java:796)
Caused by: java.lang.UnsatisfiedLinkError:
C:\apps\cygwin\home\mbd\Compile\openjdk-8-src-b132-03_mar_2014\openjdk\build\windows-x86-normal-server-release\images\j2sdk-image\jre\bin\freetype.dll:
%1 is not a valid Win32 application
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
....(lots of FontManager => ClassLoader$NativeLibrary stuff).
I am a bit new to Windows, but checking the lib in question:
mbd@LT01666
~/Compile/openjdk-8-src-b132-03_mar_2014/openjdk/build/windows-x86-normal-server-release/images/j2sdk-image/jre/bin
$ file freetype.dll
freetype.dll: current ar archive
mbd@LT01666
~/Compile/openjdk-8-src-b132-03_mar_2014/openjdk/build/windows-x86-normal-server-release/images/j2sdk-image/jre/bin
$ ldd freetype.dll
ntdll.dll => /cygdrive/c/windows/SysWOW64/ntdll.dll (0x77e70000)
kernel32.dll => /cygdrive/c/windows/syswow64/kernel32.dll (0x75900000)
KERNELBASE.dll => /cygdrive/c/windows/syswow64/KERNELBASE.dll
(0x75a10000)
I am not sure if it is 32 or 64 bit, really...
As part of the build process, I had to create a copy of freetype.dll.a - this
was installed in the X86 part of the Windows Program Files directory - I
assumed that it was 32 bit.
Any help/hints much appreciated.
Freetype on Windows has long been a frustrating source of problems.
In JDK9 there is a new configure option, --with-freetype-src, which
helps out a lot with the problematic freetype on Windows. It just
requires you to download the freetype source code and it will
automatically compile a correct freetype library for use by OpenJDK.
AFAIK this patch has not been backported to JDK8, however. But if you
can switch to JDK9 I highly recommend it. An alternative solution might
be to download JDK9 just to use this feature, and then point to the
newly built freetype library using configure in JDK8.
/Magnus