首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >远程服务器接口上的Java ClassNotFound异常

远程服务器接口上的Java ClassNotFound异常
EN

Stack Overflow用户
提问于 2018-09-29 02:19:58
回答 1查看 70关注 0票数 0

这是我的服务器main的代码

代码语言:javascript
复制
public static void main(String Args[]){
      try {
        masterDAO = MasterDAO.getInstance();
    } catch (MasterException e) {
        e.printStackTrace();
        LOGGER.log(Level.SEVERE,e.getMessage() + "MASTER SHUTDOWN");
        System.exit(1);
    }
    final int REGISTRYPORT = 1499;
    String registryHost = "localhost";
    String serviceName = "MasterService";
    try {
        String completeName = "//" + registryHost + ":" + REGISTRYPORT + "/" + serviceName;
        System.out.println(completeName);
        MasterInterface master = (MasterInterface) new Master();
        registry = LocateRegistry.createRegistry(REGISTRYPORT);
        registry.rebind(completeName, master);
        System.out.println("Master Bound ");
    }
    catch (Exception e) {
        System.err.println("Master exception: ");
        e.printStackTrace();
    }
}

这是客户端的一个方法:

代码语言:javascript
复制
public FileLocation getFileLocation(String fileName, String operation){

    final int REGISTRYPORT = 1499;
    String serviceName = "MasterService";
    String completeName = "//" + "localhost" + ":" + REGISTRYPORT + "/" + serviceName;
    try {
        System.out.println(completeName);
        Registry masterRegistry = LocateRegistry.getRegistry(1499);
        System.out.println(globalInformation.getHost() + " "+REGISTRYPORT);
        MasterInterface master = (MasterInterface) masterRegistry.lookup(completeName);
        //System.out.println("Get File Location - Result: " + fileLocation.isResult() + " - Port: "+ fileLocation.getFilePositions());
        return master.checkFile(fileName,operation);
    }
    catch (NotBoundException | IOException e) {
        e.printStackTrace();
    }  catch (FileNotFoundException e) {

        System.out.println("ERROR 404 FILE NOT FOUND");
    } catch (MasterException e) {

        System.out.println("ERROR 500 INTERNAL SERVER ERROR");
    }
    return  null;
}

我得到了这个异常

代码语言:javascript
复制
java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
java.lang.ClassNotFoundException: MasterInterface (no security manager: RMI class loader disabled)
at sun.rmi.registry.RegistryImpl_Stub.lookup(RegistryImpl_Stub.java:127)
at com.sdcc_project.cloudlet.controller.CloudLetController.getFileLocation(CloudLetController.java:125)
at com.sdcc_project.cloudlet.controller.CloudLetController.writeToMaster(CloudLetController.java:149)
at com.sdcc_project.cloudlet.CloudletApplication$3.run(CloudletApplication.java:126)
Caused by: java.lang.ClassNotFoundException: MasterInterface (no security manager: RMI class loader disabled)
at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:556)
at java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:646)
at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:311)
at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:265)
at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1800)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1748)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431)
at sun.rmi.registry.RegistryImpl_Stub.lookup(RegistryImpl_Stub.java:123)
... 3 more

服务器在本地执行,启动它的主服务器,客户端就像tomcat服务器上的spring应用程序一样执行。在spring上部署之前,我习惯于像运行普通应用程序一样运行客户端,一切都运行得很好,所以我认为问题可能出在tomcat类路径上?这是项目的包-->

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-29 02:54:06

服务器端应用程序与客户端应用程序的共享类和接口(例如MasterInterface)具有不同的包名可能会导致此问题。

检查两个项目,并确保它在两个项目中具有相同的名称。尝试实现相同的层次结构,例如:

代码语言:javascript
复制
package com.xx.yy.server_intarface;  // same in server and client application

public interface MasterInterface { ...

这解决了问题,但不仅"package“值必须相同,而且所有导入路径也必须相同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52560807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档