B4J Tutorial B4J and Raspberry Pi boards

Discussion in 'B4J Tutorials' started by Erel, Jan 23, 2014.

  1. JakeBullet70

    JakeBullet70 Well-Known Member Licensed User

    That is a good kit. I have 2 of them.
     
    Mark Turney likes this.
  2. Mark Turney

    Mark Turney Active Member Licensed User

    Thanks Jake!
     
  3. Erel

    Erel Administrator Staff Member Licensed User

    I've just ordered this kit (the ultimate package) a few days ago :)
     
    Mark Turney likes this.
  4. Mark Turney

    Mark Turney Active Member Licensed User

    Same one I ordered Erel ... nice for just a little more money comes with the extra :).
     
  5. Bob Coleman

    Bob Coleman New Member Licensed User

    You won't want to bother with the heatsink in the kit as they can get in the way of HATs and are unneeded except when abusing the PI when overclocking.

    So that kit will get you what you need and then some.
     
    Mark Turney likes this.
  6. Jeffrey Cameron

    Jeffrey Cameron Active Member Licensed User

    I just got a RPi board in to play with and I'm trying to make simple "Hello Word" GUI show up.

    I've followed the above-quoted instructions (using the latest version at the link, 1.8.0u76) and when I run a test program, it's complaining that the JavaFX runtime components are missing. I've tried it with and without the "#MergeLibraries: True" project attribute.

    Did I miss a step, or is there some project attribute that I am failing to set?

    Thanks in advance!
     
    Last edited: Jan 14, 2016
  7. Mark Turney

    Mark Turney Active Member Licensed User

    Without seeing the code, it sounds like perhaps the JavaFx version for the RPi is wrong. I am typing this in my car on the phone so I don't have access to my Mac right now, but do a search for JavaFx version support and ARM processors.

    Hope this helps!
     
    Jeffrey Cameron likes this.
  8. Jeffrey Cameron

    Jeffrey Cameron Active Member Licensed User

    Thank you, Mark, that was the right direction. I misunderstood that the new Java version does not contain JavaFX (I incorrectly assumed it was now built-in as there is no longer a separate download link with the JDK downloads).

    I downloaded and installed a user-built version of JavaFX from here: http://108.61.191.178/ (there are instructions for unzipping it there, just make sure the path you use is the same one you used in Earl's step in post #1).

    After doing that, I can see a full-screen version of the app window now, the buttons do not look correct but that is probably something I can overcome via some specific CSS entries.

    Thank you for the direction!
     
    Mark Turney likes this.
  9. Mark Turney

    Mark Turney Active Member Licensed User

    You're very welcome. I'm glad I could help. Enjoy the Raspberry Pi too ... It's got so much potential and is a load of fun to boot :) !
     
  10. Jeffrey Cameron

    Jeffrey Cameron Active Member Licensed User

    It is a lot of fun! The Linux experience harkens back to the MS DOS 3.x-6.x days of my misspent youth.

    Also, as a side note, the problem with the buttons was a lack of video memory, once I increased the video memory to 128MB (raspi-config -> Advanced Options -> Memory Split) the buttons displayed were the same as my virtual Debian box and my Windows machine.
     
    Mark Turney likes this.
  11. micro

    micro Well-Known Member Licensed User

    Hi
    Is this the file used? OpenJFX 8u40 stable for armv6hf
    Time ago I installed openJFX and work on raspberry but not completely
    In the Textfield if I click on the keyboard is not written anything.
    The rest works
     
  12. Jeffrey Cameron

    Jeffrey Cameron Active Member Licensed User

    That seems to be the same download link as I used. I was experiencing random GUI issues with my test program until I increased the video memory. If you haven't done that yet I'd try that and see if your textfield operates properly.
     
  13. micro

    micro Well-Known Member Licensed User

    This is the first step performed (merory video set to 256, on my raspberry P2), then the problem is elsewhere.
    Hi
     
  14. Mike1970

    Mike1970 Member Licensed User

    Hi Erel,
    I'm not an expert in Java or B4J, but before writing to you have tried any possible combination of test, reading back and forth from the forum.
    I'm facing a problem using the WebView in a very simple UI application.
    I've seen that JavaFX is no more supported, but this mean that B4J never ever can support UI applications?

    All I want to just test (if possible, then) is to put a WebView into a Form, and load a page.
    But seems it is impossible to get this result.
    I'm using Raspberry using NOOBS.
    I've installed JAVA using this file from Oracle: jdk-8-linux-arm-vfp-hflt.tar.gz
    I've also installed the JavaFX from this file: openjfx-8-sdk-overlay-linux-armv6hf.zip
    I've installed JAVA into the folder /home/pi/jdk1.8.0


    I've also installed different version of JAVA from: jdk-8u60-linux-arm32-vfp-hflt.tar.gz
    and installed the JavaFX from this file: openjfx-8u60-sdk-overlay-linux-armv6hf.zip
    I've installed JAVA into the folder /home/pi/jdk1.8.0_60

    Both the "openjfx" files was expanded into the respective folders (jdk1.8.0 and jdk1.8.0_60)

    If I set the system to use the jdk from the jdk1.8.0 folder, I get this result:


    java.lang.ClassNotFoundException: com.sun.glass.ui.monocle.MonoclePlatformFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:259)
    at com.sun.glass.ui.PlatformFactory.getPlatformFactory(PlatformFactory.java:45)
    at com.sun.glass.ui.Application.run(Application.java:145)
    at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:279)
    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)
    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)
    Failed to load Glass factory class
    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.NullPointerException
    at com.sun.glass.ui.Application.run(Application.java:145)
    at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:279)
    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


    If I set the system to use the jdk from jdk1.8.0_60 I get this result:

    Waiting for debugger to connect...
    Program started.
    Java HotSpot(TM) Client VM warning: You have loaded library /home/pi/jdk1.8.0_60/jre/lib/arm/libjfxwebkit.so which might have disabled stack guard. The VM will try to fix the stack guard now.
    It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
    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:497)
    at anywheresoftware.b4a.DynamicBuilder.build(DynamicBuilder.java:16)
    at anywheresoftware.b4j.objects.LayoutBuilder.loadLayoutHeader(LayoutBuilder.java:116)
    at anywheresoftware.b4j.objects.LayoutBuilder.loadLayoutHeader(LayoutBuilder.java:166)
    at anywheresoftware.b4j.objects.LayoutBuilder.loadLayout(LayoutBuilder.java:78)
    at anywheresoftware.b4j.objects.PaneWrapper.LoadLayout(PaneWrapper.java:81)
    at b4j.example.main._appstart(main.java:83)
    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:497)
    at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:612)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:229)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:159)
    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:497)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:93)
    at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:90)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:84)
    at b4j.example.main.start(main.java:36)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$8(LauncherImpl.java:863)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$7(PlatformImpl.java:326)
    at com.s
    un.javafx.application.PlatformImpl.lambda$null$5(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$6(PlatformImpl.java:294)
    at com.sun.glass.ui.monocle.RunnableProcessor.runLoop(RunnableProcessor.java:92)
    at com.sun.glass.ui.monocle.RunnableProcessor.run(RunnableProcessor.java:51)
    at java.lang.Thread.run(Thread.java:745)
    Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at anywheresoftware.b4j.objects.NodeWrapper.buildNativeView(NodeWrapper.java:664)
    at anywheresoftware.b4j.objects.WebViewWrapper.build(WebViewWrapper.java:92)
    ... 33 more
    Caused by: java.lang.Unsatisf
    iedLinkError: /home/pi/jdk1.8.0_60/jre/lib/arm/libjfxwebkit.so: /home/pi/jdk1.8.0_60/jre/lib/arm/libjfxwebkit.so: classe ELF errata: ELFCLASS64 (Possible cause: architecture word width mismatch)
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1938)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1821)
    at java.lang.Runtime.load0(Runtime.java:809)
    at java.lang.System.load(System.java:1086)
    at com.sun.glass.utils.NativeLibLoader.loadLibraryFullPath(NativeLibLoader.java:201)
    at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:94)
    at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:39)
    at com.sun.webkit.WebPage.lambda$static$0(WebPage.java:130)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.webkit.WebPage.<clinit>(WebPage.java:129)
    at javafx.scene.web.WebEngine.<init>(WebEngine.java:858)
    at javafx.scene.web.WebEngine.<init>(WebEngine.java:845)
    at javafx.scene.web.WebView.<init>(WebView.java:271)
    ... 39 more
    Error occurred on line: 26 (Main)
    java.lang.RuntimeException: Object should first be initialized (WebView).
    at anywheresoftware.b4a.AbsObjectWrapper.getObject(AbsObjectWrapper.java:32)
    at anywheresoftware.b4j.objects.NodeWrapper.innerInitialize(NodeWrapper.java:83)
    at anywheresoftware.b4j.objects.WebViewWrapper.innerInitialize(WebViewWrapper.java:33)
    at anywheresoftware.b4j.objects.LayoutBuilder.loadLayoutHeader(LayoutBuilder.java:148)
    at anywheresoftware.b4j.objects.LayoutBuilder.loadLayoutHeader(LayoutBuilder.java:166)
    at anywheresoftware.b4j.objects.LayoutBuilder.loadLayout(LayoutBuilder.java:78)
    at anywheresoftware.b4j.objects.PaneWrapper.LoadLayout(PaneWrapper.java:81)
    at b4j.example.main._appstart(main.java:83)
    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:497)
    at anywheresoftware.b4a.shell.She
    ll.runMethod(Shell.java:612)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:229)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:159)
    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:497)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:93)
    at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:90)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:84)
    at b4j.example.main.start(main.java:36)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$8(LauncherImpl.java:863)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$7(PlatformImpl.java:326)
    at com.sun.javafx.application.PlatformImpl.lambda$null$5(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImp
    l.lambda$runLater$6(PlatformImpl.java:294)
    at com.sun.glass.ui.monocle.RunnableProcessor.runLoop(RunnableProcessor.java:92)
    at com.sun.glass.ui.monocle.RunnableProcessor.run(RunnableProcessor.java:51)
    at java.lang.Thread.run(Thread.java:745)


    I'm using B4J v4.20(1)
    I've followed all the instructions given at this post: https://www.b4x.com/android/forum/t...n-raspberry-pi-help-needed.63403/#post-400773
    but the result is the same as the second above.

    It is possible to have a detailed list with all the steps to follow, in order to have a JavaFX fully working?
    I'm doing something wrong but really do not understand now where. Please could you help?

    In attachment is the zipped test project.

    Thank you for your support.

    Best regards,
    Michele.
     

    Attached Files:

  15. Erel

    Erel Administrator Staff Member Licensed User

    This is a community forum. Please don't limit your questions to a single member.

    As written in the first line of the first post, UI apps on Raspberry Pi are no longer supported.
     
  16. tango

    tango Member Licensed User

    can we play a video in raspberry pi in a application?
    i want to play a video but UI apps will run in a full screen mode. and MediaPlayer is also not supported.
    is there any way to play a video in UI apps.? how?
     
  17. Erel

    Erel Administrator Staff Member Licensed User

    UI applications are not supported.
     
  18. raphaelcno

    raphaelcno Active Member Licensed User

    Erel likes this.
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice