I want to develop an application on Netbeans IDE, with JavaFX and work on remote mode with my RaspberryPi3.
What I have done
- Installed jdk 1.8 with
sudo apt install openjdk-8-jdk
- Installed last version of JavaFX Embedded SDK port, changing these files:
armv6hf-sdk/rt/lib/ext/jfxrt.jar -->jre/lib/ext/
armv6hf-sdk/rt/lib/arm/* --> jre/lib/arm/
armv6hf-sdk/rt/lib/javafx.platform.properties --> jre/lib/
armv6hf-sdk/rt/lib/javafx.properties --> jre/lib/
armv6hf-sdk/rt/lib/jfxswt.jar --> jre/lib/
- Installed librxtx lirarie with
sudo apt-get install librxtx-java
- On netbeans IDE, I used remote platform with JRE Path
/usr
The application (It's just a HelloWorld)
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class JavaFXApplication2 extends Application {
@Override
public void start(Stage primaryStage) {
Button btn = new Button();
btn.setText("Say 'Hello World'");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
Verbose OutPut
SEVERE [global]
java.lang.NullPointerException
at org.netbeans.modules.java.j2seembedded.project.Utilities.getTargetOSForRP(Utilities.java:326)
at org.netbeans.modules.java.j2seembedded.project.RemoteBuildPropertiesProvider.createAdditionalProperties(RemoteBuildPropertiesProvider.java:95)
at org.netbeans.modules.javafx2.project.JFXActionProvider.collectAdditionalBuildProperties(JFXActionProvider.java:294)
at org.netbeans.modules.javafx2.project.JFXActionProvider.invokeAction(JFXActionProvider.java:185)
at org.netbeans.spi.project.support.LookupProviderSupport$MergedActionProvider.invokeAction(LookupProviderSupport.java:271)
at org.netbeans.modules.project.ui.actions.ProjectAction$2.run(ProjectAction.java:186)
at org.openide.util.Mutex.doEvent(Mutex.java:1356)
at org.openide.util.Mutex.writeAccess(Mutex.java:462)
at org.netbeans.modules.project.ui.actions.ProjectAction.runSequentially(ProjectAction.java:183)
at org.netbeans.modules.project.ui.actions.MainProjectAction$1$1.run(MainProjectAction.java:140)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
[catch] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
The result
If I build it with the Proyect platform, I can normally develop my application, then copy the .jar to the raspberry using Filezilla and then execute on the raspberry.
But I can't work remotely. When I select the Pi as platform, It doesn't show anything on console and it only appears one notify saying "java.lang.NullPointerException". By the way, this is my first post
Result on Netbeans 8.2 and Apache NetBeans 12.0
Error: no se ha encontrado o cargado la clase principal javafxapplication1.JavaFXApplication1
Causado por: java.lang.NoClassDefFoundError: javafx/application/Application
C:\Users\manol\Documents\NetBeansProjects\JavaFXApplication1\nbproject\remote-platform-impl.xml:144: The following error occurred while executing this line:
C:\Users\manol\Documents\NetBeansProjects\JavaFXApplication1\nbproject\remote-platform-impl.xml:102: Remote command failed with exit status 1
BUILD FAILED (total time: 4 seconds)
Command used in RaspberryPI
cd '/home/pi/NetBeansProjects//JavaFXApplication1'; '/usr/bin/java' -Dfile.encoding=UTF-8 -jar /home/pi/NetBeansProjects//JavaFXApplication1/dist/JavaFXApplication1.jar
Error in RaspberryPI
Error: no se ha encontrado o cargado la clase principal javafxapplication1.JavaFXApplication1
Causado por: java.lang.NoClassDefFoundError: javafx/application/Application
Error creating JavaFX Project
enter image description here
Error changing platform
enter image description here
enter image description here