[SOLVED]Game deployment on Raspberry pi 2

I am currently using JMonkeyEngine 3.1, and I’m having a problem deploying my game onto my Raspberry pi. I am using pi 2 model B (Quad-Core cortex A-7 900MHZ). I clean and build my project (with the default IDE build) I send it to the pi, then when I attempt to execute it, I get the current error:

Exception in thread “jME3 Main” java.lang.UnsatisfiedLinkError: /home/pi/javaTest/dist/libopenal.so.1: /home/pi/javaTest/dist/libopenal.so.1: cannot open shared object file: No such file or directory (Possible cause: can’t load IA 32-bit .so on a ARM-bit platform)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1851)
at java.lang.Runtime.load0(Runtime.java:795)
at java.lang.System.load(System.java:1062)
at com.jme3.system.NativeLibraryLoader.loadNativeLibrary(NativeLibraryLoader.java:683)
at com.jme3.system.lwjgl.LwjglContext.loadNatives(LwjglContext.java:171)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:209)
at java.lang.Thread.run(Thread.java:745)

What happens is, when I execute my “MyGame.jar” file, it throws the error above, and it (it being the pi OS, or java, I’m not sure) generates a new libopenal.so file in the dist folder.

I’ve been researching hours for days and I’ve come up with this information:
JmonkeyEngine uses OpenGL 2 by default, Raspian Jessie (PI’s image) supports OpenGL ES (idk if these will clash…)
Raspian Jessie does not support water or post process filtering
It has to be Arm v7 Compatible

When I searched for Raspberry pi support, I found mostly how to turn your pi into a retro gaming console. I found nothing talking about deploying your own java 3d game.

I’ve also researched Gradle, but there are no JME3.1 native libraries available to Gradle as far as I could tell.
I’ve looked into Jazelle, but all I found were 3 year old forums and I didn’t find much that helped me.

I took out all unused imports, I added no audio nodes or anything coming close to audio in my code, I took out my water and ppf, I’ve tried 3 different iteration deploys on pi, but I still have no luck with it.

Is what I’m attempting to do even possible?
If so, what am I doing wrong? What am I missing?

I even attempted to research armv7 architecture, but not much luck there.
Any help is greatly appreciated Thanks!

Here is My code if it Helps,


package mygame;

import com.jme3.animation.AnimChannel;
import com.jme3.animation.AnimControl;
import com.jme3.animation.AnimEventListener;
import com.jme3.animation.LoopMode;
import com.jme3.input.KeyInput;
import com.jme3.input.controls.ActionListener;
import com.jme3.input.controls.KeyTrigger;
import com.jme3.light.DirectionalLight;
import com.jme3.math.Vector3f;
import com.jme3.renderer.RenderManager;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
import com.jme3.material.Material;
import com.jme3.app.SimpleApplication;

public class Main extends SimpleApplication implements AnimEventListener
public AnimChannel channel;
public AnimControl control;
public AnimChannel channel1;
Node player;

public static void main(String[] args) 
    Main app = new Main();

public void simpleInitApp() 
    Spatial S = assetManager.loadModel("Models/Ninja/Ninja.mesh.xml");
    DirectionalLight sun = new DirectionalLight();
    sun.setDirection(new Vector3f(-1.0f,-0.7f,-1.0f));
    Spatial R = assetManager.loadModel("Models/Terrain_Smooth/Terrain_Smooth.j3o");        
        player = (Node) assetManager.loadModel("Models/Wave/Cube.mesh.xml");
        Material mat = new Material(assetManager,"Common/MatDefs/Misc/ShowNormals.j3md");
        control = player.getControl(AnimControl.class);
        channel = control.createChannel();         
    catch (Exception e)
       System.out.println("Couldn't load Animation Model");

public void simpleUpdate(float tpf) 
    //TODO: add update code

public void simpleRender(RenderManager rm) 
    //TODO: add render code

public void onAnimCycleDone(AnimControl control, AnimChannel channel, String animName) 
  System.out.println("Made it to AnimCycle");
   if (animName.equals("Wave"))
       channel.setAnim("Wave", .50f);

public void onAnimChange(AnimControl control, AnimChannel channel, String animName) 

public void initKeys()
    inputManager.addMapping("Wave", new KeyTrigger(KeyInput.KEY_SPACE));
    inputManager.addListener(actionListener, "Wave");
    System.out.println("Made it to initKeys");

public ActionListener actionListener = new ActionListener()
    public void onAction(String name, boolean keyPressed, float tpf)
        if (name.equals("Wave") && !keyPressed)
            if (!channel.getAnimationName().equals("Wave"))
                channel.setAnim("Wave", 0.50f);
                System.out.println("Made it to 5");                   


jME3.1 does not support Raspberry Pi. Someone needs to do the work of actually porting the engine to the Raspberry Pi.

It shouldn’t take very long but it will require compiling LWJGL3 for ARMv7 which nobody tried yet.

Maybe the JOGL backend is a fast-forward since that already works on Raspberry pi.

Thank you for letting me know! I’ve learned a lot looking for the answer, but it helps knowing it’s not supported yet. Again, thank you!

Yeah maybe… I appreciate Y’all taking time to answer.