aspose file tools*
The moose likes Developer Certification (SCJD/OCMJD) and the fly likes Creepy classpath? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Developer Certification (SCJD/OCMJD)
Bookmark "Creepy classpath?" Watch "Creepy classpath?" New topic
Author

Creepy classpath?

B Alexander
Greenhorn

Joined: Mar 19, 2001
Posts: 5
I'm wondering if I'm the only one who has run into a weird
classpath problem with rmi code and jar files. I have my
project in a state where I am 1 error away from uploading
it, but I'm having a problem starting the server from the
jar file.
When starting the server using the .class files directly,
everything works great. If I attempt to start the server
after jaring everything up I get this stack trace:
<author>
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: suncertify.server.DataRemoteImpl_Stub
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: suncertify.server.DataRemoteImpl_Stub
java.lang.ClassNotFoundException: suncertify.server.DataRemoteImpl_Stub
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:249)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:224)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:358)
at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
at java.rmi.Naming.rebind(Naming.java:165)
at suncertify.server.FBNServer.main(Unknown Source)
</author>


I have no problems running the client from this jar, and the
class file is definately in there - here's the jar tf for it:
<author>
169>jar tf fbn.jar
META-INF/
META-INF/MANIFEST.MF
suncertify/
suncertify/client/
suncertify/client/BookFrame$BookingWatcher.class
suncertify/client/BookFrame$BookListener.class
suncertify/client/BookFrame.class
suncertify/client/FlyByNight.class
suncertify/client/PrimaryFrame$PrimaryListener.class
suncertify/client/PrimaryFrame.class
suncertify/client/ReservationFrame$ReservationListener.class
suncertify/client/ReservationFrame.class
suncertify/client/ReservationTableModel.class
suncertify/client/WindowWatcher.class
suncertify/db/
suncertify/db/Data.class
suncertify/db/DatabaseException.class
suncertify/db/DataInfo.class
suncertify/db/FieldInfo.class
suncertify/server/
suncertify/server/DataFactory.class
suncertify/server/DataRemotable.class
suncertify/server/DataRemoteImpl.class
suncertify/server/DataRemoteImpl_Skel.class
suncertify/server/DataRemoteImpl_Stub.class
suncertify/server/FBNServer.class
</author>

I looked all over the sun java site to see if I'm missing
a step when I jar rmic generated files, but I didn't see
anything. Before resorting to voodoo spells, I wasn wondering
if anyone had any insight on this issue.
Thanks in advance for any assistance!
B.
davidlong
Greenhorn

Joined: Jan 28, 2001
Posts: 21
B Alexander
If I am right, you need clarify two things first in order to find your problems
1. Did you use a seperate rmiregistery or a localregistry in your server class. These are diffierent. if use the formaer, then you need provide rmi server every information it needs like codebase, classpath etc.
2. when you did not pack your class files into a jar file, then your codebase default is classpath, but after you packed, classpath has no any meaning all to codebase.
you may try redefine your classpath or codebase to include the jar file. if you use rmiregeistry, then try start your server application like following:
classpath c:\you_jarfile_home\you_jarfile_name.jar
or provide (......)codebase=c:\you_jarfile_home\you_jarfile_name.jar
Hope it will help
David

B Alexander
Greenhorn

Joined: Mar 19, 2001
Posts: 5
David - that is exactly what the problem was! Thank you!
In looking at the matter, I found details published by sun at:
this site which talks about all of the codebase issues.
The quick fix is to set the classpath environment variable.
Otherwise, you need to have the codebase referred to via the HTTP, which could be problematic and include it on the execution command line. If anyone else runs into this problem, try taking the -cp or -classpath argument out of your execution line, and set it prior to any executions (including the rmiregistry!).
good luck everyone!
Ajit Kumar
Ranch Hand

Joined: Jan 27, 2001
Posts: 81
hi,
Are we allowed to put remote host, port in a separate file and read from this file when the application comes up.
is it ok to do that.
Sun assignment says that our application should not require the examiner to edit any files...
is it applicable for parameter files as well???
Your comments are appreciated.
thanks
Aron J. Skantz
Greenhorn

Joined: Oct 12, 2000
Posts: 26
Hi,

'Any files' probably includes a parameter file as well. And since it's easy to use command line parameters or even a small startup window for entering the data you really don't have to risk failure by doing exactly what SUN tells you not to do.. :-)
Regards,
Aron
Ajit Kumar
Ranch Hand

Joined: Jan 27, 2001
Posts: 81
hi,
thanks,
i felt the same way after i posted this message.
in fact, i thought about it and pretty much changed all of my code already.
Just another question.
do we need to give commands for setting the classpath on different platforms .
because, if i would like to add a particular folder to the existing classpath, i would do that in one of the two ways
1. change the classpath variable in the system manually . add the specific folder i need.
or
2. run command somethign like set classpath=c:\folderToAdd;%classpath% (for windows)
in this second format the existing classpath variable can be accessed differently on different platforms.
Should we provide command lines for all the major platforms???
any thoughts
thanks
davidlong
Greenhorn

Joined: Jan 28, 2001
Posts: 21
Hi guys
Has any of you used inner rmigegistry to start the server. I used it, and it saves me a lot to do with classpath or codebase. I just wonder if my approach is unpopular.
David
Tiny Star
Greenhorn

Joined: Jul 29, 2002
Posts: 16
how to rmic an inner class?
if i use jbuilder how to config?
thanks
 
 
subject: Creepy classpath?