felix-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bjorn Roche <bj...@xowave.com>
Subject Re: java.lang.NoClassDefFoundError: com/apple/eawt/ApplicationListener
Date Tue, 28 Dec 2010 23:14:20 GMT
>>>>
>>>> 3. The next step was to go through bit-by-bit and fix all the  
>>>> dynamic class loading and resource loading. Since I've actually  
>>>> not found good documentation explaining, from a user's  
>>>> standpoint, how to do this, I just centralized my code and found  
>>>> something that gets it done. If I'm doing it wrong, at least it's  
>>>> centralized so I can change it easily.
>>>>
>>>> - if a bundle is available (OSGi case) use the classloader from  
>>>> the bundle.
>>>> - if there is an object that likely used the same classloader I  
>>>> wanted, which is often the case, get that object's classloader.
>>>> - failing that, eg, if I'm in a static context -- I use something  
>>>> like this:  
>>>> Thread.currentThread().getContextClassLoader().loadClass(path);
>>>
>>> Not sure about all this. I have to assume you are doing some low- 
>>> level stuff, since bundles typically shouldn't be doing this sort  
>>> of thing.
>>
>> I'm not doing anything special or low-level that I'm aware of. I  
>> did that stuff because I discovered that  
>> Thread.currentThread().getContextClassLoader().getResource()  
>> doesn't work in OSGi, nor does the System Classloader, but using  
>> the bundle did work.
>>
>> What /should/ I be doing to dynamically load classes and resources?
>
> Typically, bundles shouldn't have to dynamically load classes  
> manually, so it sounds like an advanced use case so far. If you are  
> integrating legacy third-party stuff, then you might not have a  
> choice, but if it is your own stuff it can quite possibly be avoided  
> through the use of services. Hard to say.


Okay. Theoretically, I could get rid of all the dynamic class loading,  
as it turns out to have been a bit overdesigned anyway, but leaving  
that asside, what about resources? If I just want a png or jpg from  
the classpath? That is pretty standard. For example, I load several  
thousand images from a resource directory, using code not unlike the  
code in the java tutorial (http://download.oracle.com/javase/tutorial/uiswing/components/icon.html

):

/** Returns an ImageIcon, or null if the path was invalid. */
protected ImageIcon createImageIcon(String path,
                                            String description) {
     java.net.URL imgURL = getClass().getResource(path);
     if (imgURL != null) {
         return new ImageIcon(imgURL, description);
     } else {
         System.err.println("Couldn't find file: " + path);
         return null;
     }
}
"Low level" or not, can you clarify about the right way to do this? Is  
there a better way to do this than using the bundle?
	bjorn

-----------------------------
Bjorn Roche
http://www.xonami.com
Audio Collaboration


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Mime
View raw message