Error running JOGL from webstart

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Error running JOGL from webstart

bjorn
Hello!

We have got a JOGL application that used to refer to the jogl jnlp at http://download.java.net/.... It worked fine. As for many others it stopped working when Oracle unsigned the corresponding jar files recently.

So, we decided first of all to host all the required files on our own server as "external" web access cannot be assumed (anymore) for all the clients using the application. It will typically be used within intranets. However that doesn't seem to matter to the problem at hand.

Secondly we updated JOGL 1.1.1.a to 2.0rc3 (seems speedier :-)  

Now the problem is that the native libs are not loading properly when using webstart. Running it locally works fine (explicitly referring the native libs). Using webstart we get the not so uncommon exception:

"java.lang.UnsatisfiedLinkError: no gluegen-rt in java.library.path"

Anyone have any ideas? Something I should test? Using the jogamp url for the jogl extension render the same error (see below). Webstart cache is cleared in-between runs. I will create a simple test (like the OneTriangle Demo) and run it within our environment.

Many Thanks!
Björn

* * *

The main jnlp:

<jnlp spec="1.0+" codebase="http://localhost:8080/xxx/">
  <information>
    [...]
  </information>
  <update check="always" policy="always"/>
  <resources>
    <java java-vm-args="-Xmx512m" version="1.6"/>
    <jar href="http://localhost:8080/xxx/app_login_client.jar" download="eager" main="false"/>
    <extension href="http://localhost:8080/xxx/jogl_extension.jnlp"/>
    <property name="sun.java2d.noddraw" value="true"/>
  </resources>
  <application-desc main-class="...">
 [...]
  </application-desc>
</jnlp>

the (generated) jogl_extension jnlp for linux:

<jnlp spec="1.0+" codebase="http://localhost:8080/xxx/" href="http://localhost:8080/xxx/jogl_extension.jnlp">
  <information>
    [...]
  </information>
  <security>
    <all-permissions/>
  </security>
  <update check="timeout" policy="always"/>
  <resources>
    <jar href="http://localhost:8080/xxx/gluegen-rt.jar" download="eager" main="false"/>
    <jar href="http://localhost:8080/xxx/jogl.all.jar" download="eager" main="false"/>
    <nativelib href="http://localhost:8080/xxx/gluegen-rt-natives-linux-i586.jar" download="eager" main="false"/>
    <nativelib href="http://localhost:8080/xxx/jogl-all-natives-linux-i586.jar" download="eager" main="false"/>
  </resources>
  <component-desc/>
</jnlp>


Some observations:

using

<extension name="jogl-all-awt" href="http://jogamp.org/deployment/jogamp-current/jogl-all-awt.jnlp" />

instead of the locally referred files is rendering the same error.

The libs are unpacked properly it seems by webstart and placed in webstart cache:

~/.java/deployment/cache/6.0/$ find . -iname lib*
./37/6a7045a5-4c634ef7-n/libnewt.so
./37/6a7045a5-4c634ef7-n/libjogl_mobile.so
./37/6a7045a5-4c634ef7-n/libnativewindow_x11.so
./37/6a7045a5-4c634ef7-n/libjogl_desktop.so
./37/6a7045a5-4c634ef7-n/libnativewindow_awt.so
./26/19810c9a-1183d137-n/libgluegen-rt.so

And the stack trace:

Caused by: java.lang.UnsatisfiedLinkError: no gluegen-rt in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1738)
        at java.lang.Runtime.loadLibrary0(Runtime.java:823)
        at java.lang.System.loadLibrary(System.java:1028)
        at com.jogamp.gluegen.runtime.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:117)
        at com.jogamp.gluegen.runtime.NativeLibLoader.access$000(NativeLibLoader.java:51)
        at com.jogamp.gluegen.runtime.NativeLibLoader$1.run(NativeLibLoader.java:70)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.jogamp.gluegen.runtime.NativeLibLoader.loadGlueGenRT(NativeLibLoader.java:68)
        at com.jogamp.common.jvm.JVMUtil.<clinit>(JVMUtil.java:56)
        at javax.media.opengl.GLProfile.<clinit>(GLProfile.java:1145)
        at javax.media.opengl.awt.GLJPanel.<init>(GLJPanel.java:245)
        at javax.media.opengl.awt.GLJPanel.<init>(GLJPanel.java:215)
        at javax.media.opengl.awt.GLJPanel.<init>(GLJPanel.java:206)

Reply | Threaded
Open this post in threaded view
|

Re: Error running JOGL from webstart

bjorn
Well a simple example works so there is something in our application that messes with the loader...
Reply | Threaded
Open this post in threaded view
|

Re: Error running JOGL from webstart

gouessej
Administrator
Hi

I replied to this "problem" there:
http://www.java-gaming.org/posts/n-b-quot-old-quot-jogl-1-1-1-jars-are-unsigned-since-september-17th-2011/page-1/view.html

JOGL 1.1.1a and JOGL 2.0 are really different, you have to modify your source code to support the latest version.

I have followed the tutorial written by Wade when Oracle removed the signature and my game works fine, I use Java Web Start.

Do you modify the system class loader?
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Error running JOGL from webstart

bjorn
Hi Julien,

Yeah, my simple test works fine as well so there had to be something else and indeed we have our own class loader...  and it does mess up loading the libraries when using webstart.

I bypassed it for the JOGL stuff and it works fine now. It is odd though that it seemed to work fine for the previous version of JOGL...

Thanks,
Björn
Reply | Threaded
Open this post in threaded view
|

Re: Error running JOGL from webstart

Sven Gothel
Administrator
On Thursday, September 22, 2011 06:53:00 PM bjorn [via jogamp] wrote:

>
> Hi Julien,
>
> Yeah, my simple test works fine as well so there had to be something else
> and indeed we have our own class loader...  and it does mess up loading the
> libraries when using webstart.
>
> I bypassed it for the JOGL stuff and it works fine now. It is odd though
> that it seemed to work fine for the previous version of JOGL...
>

http://jogamp.org/deployment/jogamp-current/jogl-test-applets.html

http://jogamp.org/wiki/index.php/Using_JOGL_in_Java_Web_Start
http://jogamp.org/wiki/index.php/Using_JOGL_in_a_Java_applet

http://jausoft.com/blog/2011/09/22/oracle-gives-up-on-java3d-and-jogl-for-ria-webstart-and-applets/
:)

~Sven