| From | Sent On | Attachments |
|---|---|---|
| jai-...@javadesktop.org | May 31, 2007 5:36 pm | |
| jai-...@javadesktop.org | May 31, 2007 5:56 pm | |
| Nidel, Mike | Jun 1, 2007 7:03 am | |
| jai-...@javadesktop.org | Jun 1, 2007 5:01 pm | |
| jai-...@javadesktop.org | Jun 3, 2007 9:11 am | |
| Nidel, Mike | Jun 4, 2007 8:31 am | |
| jai-...@javadesktop.org | Jun 4, 2007 10:52 am | |
| Nidel, Mike | Jun 4, 2007 11:27 am | |
| jai-...@javadesktop.org | Jun 4, 2007 2:10 pm | |
| jai-...@javadesktop.org | Jun 4, 2007 3:15 pm | |
| jai-...@javadesktop.org | Jun 4, 2007 3:58 pm | |
| Brian Burkhalter | Jun 4, 2007 4:05 pm | |
| jai-...@javadesktop.org | Jun 4, 2007 4:13 pm | |
| Nidel, Mike | Jun 5, 2007 6:05 am |
| Subject: | RE: [JAI-IMAGEIO] Re: NoClassDefFoundError: | |
|---|---|---|
| From: | Nidel, Mike (mike...@lmco.com) | |
| Date: | Jun 1, 2007 7:03:47 am | |
| List: | net.java.dev.jai-imageio.interest | |
My guess is that Webstart is placing the core libraries installed in the JRE into a different classloader than the application libraries. The JRE classloader can't "see" classes or other resources from the application. If you look back at your stack trace in the original message you'll see a bunch of ClassLoader stuff in the middle, which you correctly suspected to be part of the issue. But this is still pretty mysterious.
When you do a Class.forName() are you calling it just like that, or are you doing
SomeAppClass.class.forName()
or what?
If you look near the bottom of the stack trace, it's obviously finding JAI classes, so here is what I think is happening:
1. You call Class.forName() on the JAI class which causes it to be initialized. 2. This results in registering all the services, including the definition of those services/operators that are included in JAI ImageIO Tools, e.g. ImageRead/ImageWrite. 3. When THOSE JAI ImageIO Tools services are referenced, they reference back to JAI classes. But since they are in the JRE classloader, and if my theory above about the Webstart app loader is right, they cannot see the JAI classes which are in the application classloader pool.
This issue or related ones (specifically with J2EE app containers like Tomcat and Weblogic) have been very painful for us when dealing particularly with dynamically registered services such as ImageIO reader/writer plugins etc. In my opinion, the JAI extension needs to be installed into the system/JRE classloader rather than the application classloader, which MIGHT solve your problem. But then if you publish any services/plugins/operators to JAI, you might not see them load correctly due to the same issue.
Do my theories make any sense?
Mike
-----Original Message----- From: jai-...@javadesktop.org [mailto:jai-...@javadesktop.org] Sent: Thursday, May 31, 2007 8:57 PM To: inte...@jai-imageio.dev.java.net Subject: Re: [JAI-IMAGEIO] Re: NoClassDefFoundError:
javax/media/jai/OperationRegis In-Reply-To: <5024...@sdcst12.sjc.collab.net> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit
OK, so the problem lies in the execution of the application, not in the installation of the required files by WebStart. I have asked for assistance from some others who know this technology better than I.
yes indeed, they are located in the cache.
[Message sent by forum member 'bpb' (bpb)]





