Sign in to follow this  
mwarble

[java] Applets and JOGL

Recommended Posts

All, I am trying to get JOGL to work with an applet and I am exasperated. I’ll say up front for reasons I won't explain I do not want to use the JNLP Launcher. I just want to use a plain old signed applet with the normal HTML tags. I have spent many hours on this problem and have taken several routes and still haven't succeeded. Here's where I am in the process and the approach I'm taking. 1. Launch a signed applet via HTML with your standard applet tag. 2. To the best of my knowledge, because System.load and System.loadLibrary will only load a library from a local drive not over a network using a URL, I download the required library files (jogl.dll, jogl_awt.dll, jogl_cg.dll, and gluegen-rt.dll) by copying the files from the webserver to a local drive on the end user's machine. Currently I am using the java.io.tmp property as the local directory. This seems to work fine. 3. I then use System.load to load the libraries from java.io.tmp. This seems to work fine. No exceptions. 4. Steps 3 and 4 are done in AccessController doPriviedged block to satisfy the security requirements. Here's the problem. 5. When the code that actually uses the libraries is executed, it tries to reload the libraries from java.library.path. Of course the library files aren't there, because they are in java.io.tmp, and an exception is thrown. So here's my questions/comments: 1. Does anybody know why the system would try to reload the libraries when they have already been loaded? 2. It seems pretty conclusive that java.library.path cannot be changed at runtime, so that isn't an option. Correct me if I'm wrong. 3. I've tried to copy the files to java.library.path, but that is a list of directories, most which require special permision to write to. That doesn't seem to be an option. Correct me if I'm wrong. I am out of ideas on this, so any input would be greatly appreciated. I'll attach a short code snippet that shows how I'm loading the libraries. Thanks, M. Warble AccessController.doPrivileged(new PrivilegedAction() { public Object run() { try { String lib = System.getProperty("java.io.tmpdir"); copyFile("http://www.mydomain.com/" + System.mapLibraryName("jogl"), lib + System.mapLibraryName("jogl")); copyFile("http://www.mydomain.com/" + System.mapLibraryName("jogl_awt"), lib + System.mapLibraryName("jogl_awt")); copyFile("http://www.mydomain.com/" + System.mapLibraryName("jogl_cg"), lib + System.mapLibraryName("jogl_cg")); copyFile("http://www.mydomain.com/" + System.mapLibraryName("gluegen-rt"), lib + System.mapLibraryName("gluegen-rt")); System.load(lib + System.mapLibraryName("jogl")); System.load(lib + System.mapLibraryName("jogl_awt")); System.load(lib + System.mapLibraryName("gluegen-rt")); // code that uses libraries wwd = new WorldWindowGLJPanel(); ...

Share this post


Link to post
Share on other sites
Quote:
Original post by INsanityDesign
I haven't really tried before but this https://jogl-demos.dev.java.net/applettest.html does not work for you?


That uses the JNLP launcher. I need to be able to do this without the JNLP launcher.

Thanks for your reply though.

Share this post


Link to post
Share on other sites
This is how i do it and it works. (at least for me)

In applet i read the value of 'deployDir' to read resource files from server properly.

'japplet' contains my app .class files


<applet code="org.jdesktop.applet.util.JNLPAppletLauncher"
width=1024
height=768
archive="http://download.java.net/media/applet-launcher/applet-launcher.jar,
http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/jogl.jar,
http://download.java.net/media/gluegen/webstart/gluegen-rt.jar,
jbox2d-2.0.1-full.jar,
vecmath.jar,
japplet.jar">
<param name="deployDir" value="http://x.x.x.x:xxxx/JApplet/">
<param name="codebase_lookup" value="false">
<param name="subapplet.classname" value="render.JApplet">
<param name="subapplet.displayname" value="JOGL Applet">
<param name="noddraw.check" value="true">
<param name="progressbar" value="true">
<param name="jnlpNumExtensions" value="1">
<param name="jnlpExtension1"
value="http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/jogl.jnlp">
</applet>

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this