クライアントアプリケーションからサーバAPIを使う際に以下のエラーがでます。
eclipse+javaで開発中です。
Exception in thread "main" java.lang.NoClassDefFoundError: gnu/trove/THashSet
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Unknown Source)
at java.lang.Class.getDeclaredField(Unknown Source)
at java.io.ObjectStreamClass.getDeclaredSUID(Unknown Source)
at java.io.ObjectStreamClass.access$700(Unknown Source)
at java.io.ObjectStreamClass$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.io.ObjectStreamClass.<init>(Unknown Source)
at java.io.ObjectStreamClass.lookup(Unknown Source)
at java.io.ObjectStreamClass.initNonProxy(Unknown Source)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Unknown Source)
at se.pricer.apidemo.APIDemo.<init>(APIDemo.java:26)
at se.pricer.apidemo.APIDemo.main(APIDemo.java:83)
Caused by: java.lang.ClassNotFoundException: gnu.trove.THashSet
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at sun.misc.Launcher$ExtClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
... 19 more
通信のURLは合っています。
「gnu/trove/THashSet」のエラーの意味を教えて下さい。
レジストリーのバインドがうまく出来ていないと思われます。
サーバのモジュールも実行構成ー>引数タブー>VM引数でcodebasの指定方法もいまいちわかりません。
初投稿なので変な質問ですが誰か力を貸して下さい。
RMIとなるともうだいぶうろ覚えなので的外れかも知れませんが・・・
エラーメッセージから読み取るに、se.pricer.apidemo.APIDemoというデモプログラム?の中でデシリアライズ(ReadObject)されるオブジェクトの中に、gnu.trove.THashSetクラスのオブジェクトがあるのだけど、それがクライアントかサーバ(たぶんサーバ?)の方に認識されていないのでNoClassDefFoundErrorになるということでは。
GNU Troveのjarファイルか何かで、クライアントとサーバのどちらか一方にしかclasspathが通っていない、なんてものはないでしょうか?
gnu-troveなんとか.jarのような名前の。
お礼
ありがとうございます、解決できました。 教えて下さったようにクライアント側でjarファイルをclasspathを通すと動きました。 リモート関係の資料が少なく1ヶ月近く悩んでました。 わかりにくい投稿に答えていただき有難うございます。