[java] Applets and JOGL

Started by
3 comments, last by NDIR 15 years, 5 months ago
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(); ...
Advertisement
I haven't really tried before but this https://jogl-demos.dev.java.net/applettest.html does not work for you?
-----The next statement is not true!The previous statement is true!
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.
Yeah I read your post but as I cannot currently imagine a case where you would need to miss JNLP I posted that link. Have you tried the com.sun.opengl.util.JOGLAppletLauncher? Not the JNLPLauncher...



-----The next statement is not true!The previous statement is true!
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>

This topic is closed to new replies.

Advertisement