![](/img/trans.png)
[英]Java Interface does not take into consideration method implementation from the super class
[英]Sending over Interface Object from method call hiding implementation super class on server via RMI?
說我有SuperNode
類和一個Node
接口:
SuperNode implements Node
我有一個RMI-Implementation服務器端,我試圖從一種方法發送節點,而用戶沒有SuperNode的源文件,但他們確實有Node接口。
public Node RMIImplServer.getNode();
當我這樣做時,我得到這個錯誤:
java.rmi.UnmarshalException:錯誤解組返回; 嵌套的異常是:java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod( java.rmi.server.RemoteObjectInvocationHandler.invoke的未知源(com.sun.proxy。$ Proxy0.getDataNodes的未知源)(未知源)原因:java.lang.ClassNotFoundException:SEHT.somepackage.SuperNode(沒有安全管理器:禁用了RMI類加載器),位於java.rmi.server.RMIClassLoader $ 2.loadClass(未知源)的sun.rmi.server.LoaderHandler.loadClass(未知源),位於sun.rmi.server.LoaderHandler.loadClass(未知源) java.io.ObjectInputStream.readNonProxyDesc(未知源)處的sun.rmi.server.MarshalInputStream.resolveClass(未知源)處的java.rmi.server.RMIClassLoader.loadClass(未知源)java.io.ObjectInputStream.readClassDesc(未知源) )在java.io.ObjectInputStream.readOrdinaryObject(未知源 e)在java.io.ObjectInputStream.readObject0(未知源)在java.io.ObjectInputStream.readObject(未知源)在sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)在java.util.ArrayList.readObject(未知源)在sun.reflect.NativeMethodAccessorImpl.invoke(未知源)在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)在java.lang.reflect.Method.invoke(未知源)在java.io.ObjectStreamClass.invokeReadObject(未知源)在java.io.ObjectInputStream.readSerialData(未知源)在java.io.ObjectInputStream.readOrdinaryObject(未知源)在java.io.ObjectInputStream.readObject0(未知源)在java.io.ObjectInputStream.readObject(未知源) .rmi.server.UnicastRef.unmarshalValue(未知來源)...還有5個
我正在嘗試做的事情是可能的,如果我做錯了什么,我們將不勝感激。
最終弄清楚了...由於我沒有檢查過愚蠢的默認設置,jar文件未包含正確的文件。 非常感謝EJP的幫助。
客戶端不需要任何源文件。 但是,它確實需要遠程方法返回的所有類型的目標文件(.class)文件,這些文件可在其CLASSPATH上使用, 除非:
...如果您不想部署SuperNode.class
或在客戶端上部署它,則可以使用代碼庫功能。 情況很復雜。
java.rmi.server.codebase
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.