Building Openjfx on Centos 6.6
David Hill
David.Hill at Oracle.com
Fri Jan 2 15:05:17 UTC 2015
On 1/1/15, 12:18 PM, Jens Kapitza wrote:
>
> Am 30.12.2014 um 14:16 schrieb Nick Pratt:
>> Ok, I setup a fresh Ubuntu 12.0.4 server install on a VM (32 bit this time), installed Gradle 1.8, Oracle JDK 1.8u25 (x86 version, removed the existing jfxrt.jar), grabbed all the latest OpenJFX source and Pi/Arm tool chain and rebuilt. I copied the resulting contents of ./rt/build/armv6hf-sdk/rt over the top of JDK_HOME/jre/ on my Pi, but I'm still hitting a link error when running a JavaFX app:
>>
> I've testet this some days ago;
>
> you have to remove some more jars.
>
> ||
> |rm| |-f $JAVA_HOME||/jre/lib/ext/jfx||*jar $JAVA_HOME||/jre/lib/arm/libjavafx_font_t2k||.so|
This was added to to wiki this week as I worked to figure out what was happening.
https://wiki.openjdk.java.net/display/OpenJFX/Cross+Building+for+ARM+Hard+Float
Also added, on the Pi we need you to use 'sudo java ...' because of the permissions of udev and the devices that we need to read.
Dave
>
> https://wiki.openjdk.java.net/display/OpenJFX/Cross+Building+for+ARM+Hard+Float
>>
>> pi at raspberrypi ~ $ java -jar JavaFXApp.jar
>>
>> Exception in thread "main" java.lang.reflect.InvocationTargetException
>>
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>
>> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>
>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>
>> at java.lang.reflect.Method.invoke(Method.java:483)
>>
>> at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
>>
>> Caused by: java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: com.sun.glass.ui.monocle.linux.Udev._open()J
>>
>> at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:296)
>>
>> at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:216)
>>
>> at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:653)
>>
>> at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:314)
>>
>> at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:305)
>>
>> ... 5 more
>>
>> Caused by: java.lang.UnsatisfiedLinkError: com.sun.glass.ui.monocle.linux.Udev._open()J
>>
>> at com.sun.glass.ui.monocle.linux.Udev._open(Native Method)
>>
>> at com.sun.glass.ui.monocle.linux.Udev.<init>(Udev.java:68)
>>
>> at com.sun.glass.ui.monocle.linux.Udev.getInstance(Udev.java:54)
>>
>> at com.sun.glass.ui.monocle.linux.LinuxInputDeviceRegistry.<init>(LinuxInputDeviceRegistry.java:77)
>>
>> at com.sun.glass.ui.monocle.linux.LinuxPlatform.createInputDeviceRegistry(LinuxPlatform.java:19)
>>
>> at com.sun.glass.ui.monocle.NativePlatform.getInputDeviceRegistry(NativePlatform.java:58)
>>
>> at com.sun.glass.ui.monocle.MonocleApplication.<init>(MonocleApplication.java:78)
>>
>> at com.sun.glass.ui.monocle.MonoclePlatformFactory.createApplication(MonoclePlatformFactory.java:45)
>>
>> at com.sun.glass.ui.Application.run(Application.java:145)
>>
>> at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:281)
>>
>> ... 9 more
>>
>> pi at raspberrypi~ $which java
>>
>> /opt/java/bin/java
>>
>>
>> I look at a couple of libs within the ./jre/lib/arm folder (one I replaced, one original):
>>
>> pi at raspberrypi/opt/java/jre/lib/arm $file libjava.so
>>
>> libjava.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x85ac21c4b5e873e5ed15d80b0e64fb4c38122e8f, not stripped
>>
>> pi at raspberrypi /opt/java/jre/lib/arm $ file libjavafx_iio.so
>>
>> libjavafx_iio.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, BuildID[sha1]=0xd4b0794ac7451d58e5bf2ab6d8c856b2aa0005e5, not stripped
>>
>>
>> So the latter looks correct (the former was supplied by Oracle)
>>
>> My C knowledge is extremely rusty (like 15 years old), and that was mostly on MS Windows - how do I check which shared lib contains the com.sun.glass.ui.monocle.linux.Udev._open()J method?
>>
>> Perhaps this is a gcc/link problem - did I use a different version of the compiler than I was supposed to and my version has mangled things differently, or did I install all the .so files in the wrong place (I put them all in /opt/java/jre/lib/arm):
>>
>> pi at raspberrypi /opt/java/jre/lib/arm $ ls -la | grep "Dec 30"
>>
>> drwxr-xr-x 12 pi pi 4096 Dec 30 07:46 ..
>>
>> -rwxrwxr-x 1 pi pi 61200 Dec 30 07:54 libdecora_sse.so
>>
>> -rwxr-xr-x 1 pi pi 134489 Dec 30 07:54 libfxplugins.so
>>
>> -rwxrwxr-x 1 pi pi 31428 Dec 30 07:54 libglass_monocle.so
>>
>> -rwxrwxr-x 1 pi pi 15946 Dec 30 07:54 libglass_monocle_x11.so
>>
>> -rwxrwxr-x 1 pi pi 193850 Dec 30 07:54 libglass.so
>>
>> -rwxr-xr-x 1 pi pi 1530711 Dec 30 07:54 libgstreamer-lite.so
>>
>> -rwxrwxr-x 1 pi pi 23301 Dec 30 07:54 libjavafx_font_freetype.so
>>
>> -rwxrwxr-x 1 pi pi 20564 Dec 30 07:54 libjavafx_font_pango.so
>>
>> -rwxrwxr-x 1 pi pi 14950 Dec 30 07:54 libjavafx_font.so
>>
>> -rwxrwxr-x 1 pi pi 218614 Dec 30 07:54 libjavafx_iio.so
>>
>> -rwxr-xr-x 1 pi pi 224345 Dec 30 07:54 libjfxmedia.so
>>
>> -rwxr-xr-x 1 pi pi 30879536 Dec 30 07:54 libjfxwebkit.so
>>
>> -rwxrwxr-x 1 pi pi 42591 Dec 30 07:54 libprism_common.so
>>
>> -rwxrwxr-x 1 pi pi 59640 Dec 30 07:54 libprism_es2_eglfb.so
>>
>> -rwxrwxr-x 1 pi pi 54149 Dec 30 07:54 libprism_es2_monocle.so
>>
>> -rwxrwxr-x 1 pi pi 56508 Dec 30 07:54 libprism_sw.so
>>
>>
>> *Compile machine (Ubuntu 12 ISO):*
>>
>> @ubuntu:~/work/rt/build/armv6hf-sdk/rt$ uname -a
>>
>> Linux ubuntu 3.13.0-43-generic #72~precise1-Ubuntu SMP Tue Dec 9 12:14:42 UTC 2014 i686 i686 i386 GNU/Linux
>>
>> @ubuntu:~/work/rt/build/armv6hf-sdk/rt$ gcc --version
>>
>> gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
>>
>> @ubuntu:~/work/rt/build/armv6hf-sdk/rt$ lsb_release -a
>>
>> No LSB modules are available.
>>
>> Distributor ID:Ubuntu
>>
>> Description:Ubuntu 12.04.5 LTS
>>
>> Release:12.04
>>
>> Codename:precise
>>
>>
>> On Tue, Dec 30, 2014 at 6:40 AM, Jens Kapitza <j.kapitza at schwarze-allianz.de <mailto:j.kapitza at schwarze-allianz.de>> wrote:
>>
>> Hi Nick,
>>
>> i've read you found a solution, i had the same Problem (linux.grandle)
>>
>> in build folder there were some empty build files. as far as i can
>> remember linux_tools....
>> the script tries to find cflags and linker options but there is an
>> empty file (i've just deleted this file, clean rebuild works)
>>
>>
>> the error with grandle 1.8 was behind this line 78 ^^
>>
>>
>>
>> for the link errors; have you copied the libs (.so) files into
>> your openjdk build (after the build there is a sdk folder with
>> libs and jar)
>>
>> the so file have to be in the openjdk lib folder or (i think
>> should work somewhere below /usr/lib
>>
>>
>> --
>> Jens Kapitza
>>
>> Am 29.12.2014 um 01:35 schrieb Nick Pratt:
>>
>> Does anyone have any tips on getting Openjfx (latest source as of
>> 2014-12-28 19:00 EST) to build on a Centos 6.6 box?
>>
>> Im following the wiki for Linux builds and grabbed Gradle 1.8
>> (does the
>> latest 2.2 work?) but Im failing to build with the following
>> error:
>>
>> [work at nyprod1 rt]# /opt/gradle/bin/gradle
>>
>> :buildSrc:generateGrammarSource UP-TO-DATE
>>
>> :buildSrc:compileJava UP-TO-DATE
>>
>> :buildSrc:compileGroovy UP-TO-DATE
>>
>> :buildSrc:processResources UP-TO-DATE
>>
>> :buildSrc:classes UP-TO-DATE
>>
>> :buildSrc:jar UP-TO-DATE
>>
>> :buildSrc:assemble UP-TO-DATE
>>
>> :buildSrc:compileTestJava UP-TO-DATE
>>
>> :buildSrc:compileTestGroovy UP-TO-DATE
>>
>> :buildSrc:processTestResources UP-TO-DATE
>>
>> :buildSrc:testClasses UP-TO-DATE
>>
>> :buildSrc:test UP-TO-DATE
>>
>> :buildSrc:check UP-TO-DATE
>>
>> :buildSrc:build UP-TO-DATE
>>
>>
>> FAILURE: Build failed with an exception.
>>
>>
>> * Where:
>>
>> Script '/work/WorkingCopies/rt/buildSrc/linux.gradle' line: 78
>>
>>
>> * What went wrong:
>>
>> A problem occurred evaluating script.
>>
>> Cannot invoke method split() on null object
>>
>>
>> * Try:
>>
>> Run with --stacktrace option to get the stack trace. Run with
>> --info or
>> --debug option to get more log output.
>>
>>
>> BUILD FAILED
>>
>>
>> Total time: 8.96 secs
>>
>>
>> If anyone has any tips or suggestions to get this compiling on
>> Centos 6.x
>> they would be most appreciated.
>>
>>
>>
>
--
David Hill<David.Hill at Oracle.com>
Java Embedded Development
"A man's feet should be planted in his country, but his eyes should survey the world."
-- George Santayana (1863 - 1952)
More information about the openjfx-dev
mailing list