Login  Register

Running a JOGL app from a single JAR file

Posted by sasq on Jan 14, 2015; 8:40am
URL: https://forum.jogamp.org/Running-a-JOGL-app-from-a-single-JAR-file-tp4033846.html

Hello.

I wrote an application using JOGL, compiled it and run, and everything works fine.

Now I want to make a JAR file out of it, so that I could put it on my website for download, and it needs to run even if the user doesn't have JOGL libraries installed on his machine. Is there any way to supply the JOGL libraries within the JAR file itself to make it a self-contained app?

I tried to make a JAR file, but it doesn't seem to work: it prints an error about missing libraries:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/media/opengl/GLEventListener
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Caused by: java.lang.ClassNotFoundException: javax.media.opengl.GLEventListener
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
        ... 11 more
Could not find the main class: Main. Program will exit.

How can I supply the JOGL libraries within my JAR file?

Edit: Oh, and I don't use any IDE, just plain old text editor and command line on Linux.