微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java.rmi.server.ExportException:远程对象实现了非法的远程接口

如何解决java.rmi.server.ExportException:远程对象实现了非法的远程接口

出现此错误

1) Error injecting constructor,java.rmi.server.ExportException: remote object implements illegal remote interface; nested exception is: 
    java.lang.IllegalArgumentException: illegal remote method encountered: public abstract java.util.List com.mycompany.repository.CustomCodeRepository.getCustomCodeEntity(java.lang.String,java.lang.String,java.lang.String)
  at com.mycompany.repository.impl.CustomCodeRepositoryImpl.<init>(CustomCodeRepositoryImpl.java:63)
  while locating com.mycompany.repository.impl.CustomCodeRepositoryImpl
  at com.mycompany.guice.GuiceConfigModule.configure(GuiceConfigModule.java:79)
  while locating com.mycompany.repository.CustomCodeRepository
    for field at com.mycompany.resource.ServerResource.customCodeRepository(ServerResource.java:53)
  while locating com.mycompany.resource.ServerResource

对于此代码

@Override
protected void configure() {
  
bind(EntityRepository.class).to(EntityRepositoryImpl.class).in(Scopes.SINGLetoN);  
bind(CustomCodeRepository.class).to(CustomCodeRepositoryImpl.class).in(Scopes.SINGLetoN);
}
public class CustomCodeRepositoryImpl extends UnicastRemoteObject
        implements CustomCodeRepository {

  @Inject
  @Named("xodusRoot")
  String xodusRoot;

  @Inject
  @Named("masterStore")
  String masterStore;

  @Inject 
  EntityRepository entityRepository;

  public CustomCodeRepositoryImpl() throws remoteexception {
  }

  @Override
  public String createCustomCode(String appId,String namespace,String customCodeName,String description,Long timeout,InputStream jar) {
  }
  @Override
  public List<Map<String,Comparable>> getCustomCodeEntity(String appId,String customCodeName) {
    return entityRepository.getEntity(
            appId,namespace,Constants.ENTITYSTORE_CUSTOMCODE,Constants.CUSTOMCODE_NAME,customCodeName,new ArrayList<>());
  }

解决方法

正如在异常中提到的那样,它是一个嵌套异常。内部的例外是:

java.lang.IllegalArgumentException: illegal remote method encountered: public abstract java.util.List com.mycompany.repository.CustomCodeRepository.getCustomCodeEntity(java.lang.String,java.lang.String,java.lang.String)

我猜您正在覆盖java.rmi.Remote。如果是这种情况,那么我将引用Illegal remote method in java

RMI远程接口上的所有方法必须在其throws子句中声明RemoteException。

这意味着您需要在扩展throws RemoteException的接口中的所有方法的声明中添加Remote。那可能是CustomCodeRepository

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。