【问题标题】:Java RMI Object/DTO transfer ClassCastExceptionJava RMI Object/DTO 传输 ClassCastException
【发布时间】:2021-08-14 15:51:57
【问题描述】:

当我想通过 rmi 服务取回 DTO 时,我遇到了 ClassCastException。 我的东西:

模块 A:

    @Bean
    public RmiProxyFactoryBean rmiProxyFactoryBean() {
        RmiProxyFactoryBean proxyFactory = new RmiProxyFactoryBean();
        proxyFactory.setServiceUrl("rmi://localhost:1099/FileApi");
        proxyFactory.setServiceInterface(FileApi.class);
        return proxyFactory;
    }

模块_B:

    @Bean
    public RmiServiceExporter rmiServiceExporter(final FileApi implementation) {
        Class<FileApi> serviceInterface = FileApi.class;
        RmiServiceExporter exporter = new RmiServiceExporter();
        exporter.setServiceInterface(serviceInterface);
        exporter.setService(implementation);
        exporter.setServiceName(serviceInterface.getSimpleName());
        exporter.setRegistryPort(1099);
        return exporter;
    }
    @Data
    public class FileDto implements Serializable {
        private static final long serialVersionUID = 8226436902318340588L;

        private final String streamId;
        private final String name;
        private final boolean isDirectory;

    }
    public interface FileApi {
        FileDto uploadFile(final UploadDto uploadDto);
    }

问题:当我调用 FileDto uploadFile(final UploadDto uploadDto); 并且我想使用结果 dto 然后我得到这个:

    java.lang.ClassCastException: class hu.teszt.FileDto cannot be cast to class hu.teszt.FileDto (hu.teszt.FileDto is in unnamed module of loader 'app'; hu.teszt.FileDto is in unnamed module of loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader @6ea914f)
        at com.sun.proxy.$Proxy144.uploadFile(Unknown Source) ~[na:na]

我试图在 FileDto.class 中实现 java.rmi.Remote,但我得到了同样的异常。我做错了什么?

【问题讨论】:

    标签: java rmi classcastexception


    【解决方案1】:

    这与devtools 包有关。见following issue on GitHub

    任何反序列化内容的库都会发生这种情况。尤其是缓存库会受到影响。

    您可以从 pom 中删除 devtools 包,或者不实现 Serializable 接口,看看是否能解决问题。

    【讨论】:

      猜你喜欢
      • 2018-08-15
      • 2016-03-14
      • 2016-01-26
      • 1970-01-01
      • 2018-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多