【问题标题】:java RMI can't run server [duplicate]java RMI无法运行服务器[重复]
【发布时间】:2013-10-30 11:52:03
【问题描述】:

我正在为 RMI 苦苦挣扎。 我对此完全陌生,并尝试过this tutorial

我所有的类和接口都编译得很好,但是当我尝试运行 Server 类时,我得到了一些异常(如下所列),项目的构建如下:

-pakage hello
            --interface Hello.java
            --class Server.java
            --class Client.java

我做过 Somme 研究,他们总是建议更改安全策略文件。 所以我在 java.policy 中添加了以下策略:

grant 
{  
     permission java.security.AllPermission "", "";  
};

第二个“问题”:我运行 Linux mint,所以我开始明白我不需要运行 rmiregistry,这是正确的还是我也需要启动它,我该怎么做。

列出的例外情况:

Server exception: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    java.lang.ClassNotFoundException: hello.Hello
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    java.lang.ClassNotFoundException: hello.Hello
    at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:419)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:267)
    at sun.rmi.transport.Transport$1.run(Transport.java:177)
    at sun.rmi.transport.Transport$1.run(Transport.java:174)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:275)
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:252)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:378)
    at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
    at hello.Server.main(Server.java:23)

谁能帮帮我?

【问题讨论】:

    标签: java rmi


    【解决方案1】:

    错误清楚地表明没有找到hello.Hello Class。请确保它在类路径中。您在link 中提供了所有内容 - 启动 Java RMI 注册表、服务器和客户端

    部分

    【讨论】:

    • 类和接口在类路径中,启动了RMI注册但仍然没有成功
    • 您的 RMI 注册表启动了吗?使用 java -classpath classDir 完全限定的服务器类名在类路径中设置 .class 文件后是否启动了 JVM?
    • 我按顺序使用的命令:javac -d ./compiled *.java; cd编译; rmir​​egistry &; java -类路径。你好。服务器
    • 你的编译目录是否包含具有包结构的类?
    • 是的./compiled/hello/
    猜你喜欢
    • 2010-10-02
    • 2015-07-04
    • 1970-01-01
    • 2021-09-26
    • 2018-07-13
    • 2016-01-11
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多