• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

can not found interface class

 
Simon Simbolon
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi, all

I'm still new to RMI, so please be gentle

I'm trying to create an RMI server using netbeans, but I'm having some difficulties. Here is my code:

the interfaceJar:


The implementationJar:
1st class:


2nd class:


I build both jar and put them with this hierarchy in the server:
/opt/temp/implementationJar.jar
/opt/temp/lib/interfaceJar.jar

but when I run the command: java -jar implementationJar.jar, i got following error:

java.rmi.UnexpectedException: undeclared checked exception; nested exception is:
java.lang.ClassNotFoundException: Could not find class (interfaces.Calculator) at codebase ()
at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
at java.rmi.Naming.rebind(Naming.java:160)
at server.CalculatorServer.<init>(CalculatorServer.java:31)
at server.CalculatorServer.main(CalculatorServer.java:48)
Caused by: java.lang.ClassNotFoundException: Could not find class (interfaces.Calculator) at codebase ()
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:359)

What did I do wrong?
 
Karthik Shiraly
Bartender
Posts: 1208
25
Android C++ Java Linux PHP Python
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,
Include Interfaces.jar in classpath with -cp option.
Setting up RMI needs attention - lots of things that can go wrong. It's a good idea to read RMI tutorial
and RMI FAQ thoroughly first, if you haven't done so already.
 
Simon Simbolon
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I've tried adding the -cp, so the command like are like this:
java -cp /opt/temp/lib/interfaceJar.jar -jar implementationJar.jar
but the error is still occurs.

I've also tried to add the codebase property:
java -Djava.security.policy=/opt/event-logger-client/wideopen.policy -Djava.rmi.server.codebase=file:///opt/temp/lib/isengInterfaces.jar -jar isengServer.jar
but instead I found error:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassCastException: java.io.ObjectStreamClass cannot be cast to java.lang.String
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:359)
at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
at java.rmi.Naming.rebind(Naming.java:160)
at server.CalculatorServer.<init>(CalculatorServer.java:31)
at server.CalculatorServer.main(CalculatorServer.java:48)
Caused by: java.lang.ClassCastException: java.io.ObjectStreamClass cannot be cast to java.lang.String

please help?
 
Karthik Shiraly
Bartender
Posts: 1208
25
Android C++ Java Linux PHP Python
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

One of these should be done.
1) rmiregistry has the interface jar in its classpath, OR
2) rmiregistry is running with -Djava.rmi.server.codebase set, OR
3) rmiregistry runs without either settings, but then server should run with -Djava.rmi.server.codebase set.
All these are so that the Naming binding can find the interface and tack it onto the dynamically created stub.

Mandatorily, the server should also have -cp interface.jar. This is nothing to with the binding, but because your server has a runtime dependency on the interface.

Also go through this article on dynamic code downloading
 
Arpita Shah
Greenhorn
Posts: 15
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
For a really good review of reporting systems available on SharePoint, take a look at http://www.sharepointreporting.info/
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic