java.lang.ClassNotFoundException : access to class loader denied 异常

标签 java

我是一名学习 java 的学生,并获得了 java RMI 作业 我创建了 4 个文件

  1. 你好界面
  2. remotehelloimpl
  3. 你好服务器
  4. 你好客户端

我已经在 eclipse 上安装了 jr6 插件以在默认端口上运行注册表 代码如下 你好界面

package demo.rmi.hello.common;
import java.rmi.Remote;
import java.rmi.RemoteException;


public interface helloInterface extends Remote {

    /** This is a sample method. Delete it and add one of your own. */
    public String simpleRemoteMethod(String arg) throws RemoteException;
    public String say() throws RemoteException;

}

remotehelloimpl 的代码

 package demo.rmi.hello.server;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import demo.rmi.hello.common.helloInterface;
public class remotehelloImpl extends UnicastRemoteObject implements
helloInterface {
String message;
protected remotehelloImpl(String msg) throws RemoteException {
//super();
// TODO Auto-generated constructor stub
message=msg;
}
public String say() throws RemoteException {
// TODO Auto-generated method stub
return message;
}
@Override
public String simpleRemoteMethod(String arg) throws RemoteException {
    // TODO Auto-generated method stub
    return null;
}
}

helloserver 代码

package demo.rmi.hello.server;
import java.rmi.Naming;
import java.rmi.RMISecurityManager;
import demo.rmi.hello.common.helloInterface;
public class helloserver {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.setSecurityManager(new RMISecurityManager());
try {
helloInterface h = new remotehelloImpl("Hello,From Me!");
Naming.rebind("rmi://localhost:1099/HelloService", h);
System.out.println ("Server is connected and ready for operation.");
}
catch (Exception e) {
System.out.println ("Server not connected: " + e);
}
}
}

*helloclient 代码*

package demo.rmi.hello.client;
    import java.rmi.Naming;
    import java.rmi.RMISecurityManager;
    import demo.rmi.hello.common.helloInterface;
    public class helloclient {
    /**
    * @param args
    */
    public static void main (String[] argv) {
    System.setSecurityManager(new RMISecurityManager());
    try {
    helloInterface hello =(helloInterface) Naming.lookup ("rmi://localhost/HelloService");
    System.out.println (hello.say());
    }
    catch (Exception e){
    System.out.println ("HelloClient exception: " + e);}
    }
    }

我有两个安全策略(在 eclipse 上自动生成) 政策一 //此文件由 Eclipse 的 RMI 插件生成。

///////////////////////////////////////////////////////////////
// This is a sample policy file that grants the application all permissions. 
// A policy file is needed by the RMISecurityManager and your application might
// not work after installing the RMISecurityManager unless you provide a 
// security policy file at launch.
//
// You can configure the security policy of a launched application using either
// the RMI Launcher or by manually setting the java.security.policy property.
//
// SECURITY NOTE: This security policy is good for development. For deployment
// you may need a stricter security policy.
//
// For more information see:
//    http://java.sun.com/docs/books/tutorial/rmi/running.html
//    http://java.sun.com/j2se/1.5.0/docs/guide/security/PolicyFiles.html
// 

grant {
    permission java.security.AllPermission;

    // Other options:
    // permission java.net.SocketPermission "127.0.0.1:1024-", "accept, connect, listen, resolve";
    // permission java.net.SocketPermission "localhost:1024-", "accept, connect, listen, resolve";

    // From http://java.sun.com/docs/books/tutorial/rmi/running.html
    // Copyright 1995-2005 Sun Microsystems, Inc. Reprinted with permission 

    // permission java.net.SocketPermission "*:1024-65535", "connect,accept";
    // permission java.net.SocketPermission "*:80", "connect";

    // permission java.net.SocketPermission "*:1024-65535", "connect,accept";
    // permission java.io.FilePermission "c:\\home\\ann\\public_html\\classes\\-", "read";
    // permission java.io.FilePermission "c:\\home\\jones\\public_html\\classes\\-", "read";
};

*安全政策2

   // This file was generated by the RMI Plugin for Eclipse.

///////////////////////////////////////////////////////////////
// This is a sample policy file that grants the application all permissions. 
// A policy file is needed by the RMISecurityManager and your application might
// not work after installing the RMISecurityManager unless you provide a 
// security policy file at launch.
//
// You can configure the security policy of a launched application using either
// the RMI Launcher or by manually setting the java.security.policy property.
//
// SECURITY NOTE: This security policy is good for development. For deployment
// you may need a stricter security policy.
//
// For more information see:
//    http://java.sun.com/docs/books/tutorial/rmi/running.html
//    http://java.sun.com/j2se/1.5.0/docs/guide/security/PolicyFiles.html
// 

grant {
    permission java.security.AllPermission;

    // Other options:
    // permission java.net.SocketPermission "127.0.0.1:1024-", "accept, connect, listen, resolve";
    // permission java.net.SocketPermission "localhost:1024-", "accept, connect, listen, resolve";

    // From http://java.sun.com/docs/books/tutorial/rmi/running.html
    // Copyright 1995-2005 Sun Microsystems, Inc. Reprinted with permission 

    // permission java.net.SocketPermission "*:1024-65535", "connect,accept";
    // permission java.net.SocketPermission "*:80", "connect";

    // permission java.net.SocketPermission "*:1024-65535", "connect,accept";
    // permission java.io.FilePermission "c:\\home\\ann\\public_html\\classes\\-", "read";
    // permission java.io.FilePermission "c:\\home\\jones\\public_html\\classes\\-", "read";
};

我先启动注册表,然后启动服务器,但出现以下错误,

Server not connected: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    java.lang.ClassNotFoundException: access to class loader denied

最佳答案

this post其中讨论了“访问类加载器被拒绝”的问题。

此外,您还没有在客户端代码中指定端口号 1099。

关于java.lang.ClassNotFoundException : access to class loader denied 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8833555/

相关文章:

java - 泛型数组转换

java - SpringMVC(安全)- 403 错误

java - 将下载的 .js 文件添加到 Netbeans 中的现有项目中

Java - 通过循环用 ImageIcons 填充 JLabels 数组(NullPointerException)

java - 如何选择使用 Maven 执行哪些 JUnit5 标签

java - 我在尝试获取一些数据时将 SQL 状态设置为 null 并关闭语句

Java:如何在空格后将字符串拆分为两个单独的数组?

java - 注入(inject)与继承

java - 具有纯 JDBC-JNDI :javax. naming.NameNotFoundException : Name [jdbc/KDB] is not bound in this Context. 无法找到 [jdbc] 的 Tomcat 8.5

java - 上传到S3时如何设置内容类型和内容编码?