Building Openjfx on Centos 6.6

Nick Pratt nbpratt at gmail.com
Tue Dec 30 13:16:35 UTC 2014


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:

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
> 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.
>>
>
>


More information about the openjfx-dev mailing list