Dynamic Class Loading "THIS IS A TOUGH ONE"

My application is deployed in a jar file.  During startup, the app needs to locate this jar file or the root directory to where it was extracted.  I will spare you the details as to why we do this.

The way we do this is by getting the ClassLoader object of a regular class found in the jar file.  We then use the getResource() method of the ClassLoader object in order to get the absolute path of the class.  From this path, we can extract the absolute path of the jar file or the root of where the jar file was extracted.

However, in this certain environment, I am not getting the absolute path when calling getResource().  Instead I get this:

classloader:/com/????/????/????.class

where the /com is the first directory in the package structure found in the jar file.

The environment is Oracle 9i application server, Linux OS with German locale.

Can anyone tell me why getResource() doesn't give me the absolute path of the loaded class?  It works fine with all of environments.

Thanks
leobaz2Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
CEHJConnect With a Mentor Commented:
>>- this is probably a valid path, which uses the 'classloader' protocol, implemented by your Oracle 9i app server.

And is an example of what i was saying earlier - you can't rely on the returned url being resolvable in terms of the file system
0
 
CEHJCommented:
I'm not sure what you're trying to do is possible. As you know, these urls are based on class loader contexts rather than the underlying file system. It may be easier just to get the app to scan the file system. Are you certain you need to know these absolute paths?
0
 
leobaz2Author Commented:
Yes.  This has been working for many months.  I don't know why it is doing this now.
0
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

 
SlimHealerCommented:
Probably there is an accented German character in the pathname where you have been extracted.  Often the parsers barf when they see unexpected UTF8 characters in paths.

Try extracting things to a more "vanilla" named folder; I bet it starts working again.
0
 
leobaz2Author Commented:
The path doesn't have any German characters in it.  It look like a normal path with just english characters in it.
0
 
objectsCommented:
> Can anyone tell me why getResource() doesn't give me the absolute path of the loaded class?

are you sure its not?
What happens when you try to access the returned url?
0
 
Venci75Connect With a Mentor Commented:
>> classloader:/com/????/????/????.class
This value is specific to the class loader implementation. As objects metioned - this is probably a valid path, which uses the 'classloader' protocol, implemented by your Oracle 9i app server.
BTW: Why do you need to know the path to the .jar file?
0
 
leobaz2Author Commented:
Thanks guys.  I understand now.
0
 
CEHJCommented:
8-)
0
 
objectsCommented:
???? What was wrong with my comment that the path perhaps was valid? ????
0
 
CEHJCommented:
Where does 'valid' or 'invalid' come into it? All that matters is whether it's locatable in the file system
0
 
objectsCommented:
valid in that it points to the loaded class


0
 
CEHJCommented:
>>valid in that it points to the loaded class

But that's not of any interest. leobaz2 is aftera filesystem resolution
0
 
objectsCommented:
>  leobaz2 is aftera filesystem resolution

And that is???
0
 
CEHJCommented:
Locating the absolute path of the class in the filesystem
0
 
objectsCommented:
So where did you explain how to do that :-D
0
 
CEHJCommented:
I think you've rather missed the point ;-)
0
 
objectsCommented:
Not really, you're just being argumentative (again) :)
0
 
CEHJCommented:
>>What you had to do here to answer? Hm?

I'm sorry - i was just trying to explain that it was nothing to do with validity
0
 
VenabiliCommented:
If it is so,it is the Asker work. Not the work of the other experts. :)
So - do we have a deal that all this critising and blah-blah will stop? So we really have a good team  of experts in this area? Which show that  we are a team?

Venabili
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.