java.lang.SecurityException异常

Exception in thread "main" java.lang.SecurityException: class "org.eclipse.swt.widgets.UFCComposite"'s signer information does not match signer information of other classes in the same package


什么情况下可能出现该异常?
当用户在自己的程序中定义了一个与系统内置的(如jdk,其它库)同包的类时。
比如在自己的项目中定义了一个
java.lang包。在java.lang包下定义了某个类。加载该类或使用该类时,就会报出SecurityException异常。

 


相关概念:
父亲委托机制的优点?
父亲委托机制的优点是能够提高软件系统的安全性。因为在此机制下,用户自定义的类加载器不可能加载应该由父加载器加载
的可靠类,从而防止不可靠甚至恶意的代码代替由父加载器加载的可靠代码。
例如,java.lang.Object类总是由根类加载器加载(BootStrap),其他任何用户自定义的类加载器都不可能加载含有恶意代码的
java.lang.Object类。

 

有几个重要概念需要理解一下。(与安全有关)


1.命名空间
每个类加载器都有自己的命名空间,命名空间由加载器及所有父加载器所加载的类组成。
在同一个命名空间中,不会出现类的完整名字(包括类的包名)相同的两个类;在不同的命名空间中,
有可能会出现类的完整名字(包括类的包名)相同的两个类。

2.运行时包
由同一个类加载器加载的属于相同包的类组成运行时包。决定两个类是不是属于同一个运行时包,不仅
要看它们的包名是否相同,还要看定义类加载器是否相同。只有属于同一运行时包的类才能互相访问可见(即默认访问级别)
的类和类成员。这样的限制能避免用户自定义的类冒充核心类库的类,去访问核心类库的包可见成员。假设用户自己定义了一个类
java.lang.Spy,并由用户自定义的类加载器加载,由于jang.lang.Spy和核心类库java.lang.*由不同的加载器加载,它们属于不同的运行时包,所以java.lang.Spy不能访问核心类库java.lang包中的可见成员。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 2、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 4、String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。 5、运行时异常与一般异常有何异同? 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 6、说出Servlet的生命周期,并说出Servlet和CGI的区别。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。 7、说出ArrayList,Vector, LinkedList的存储性能和特性 ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 8、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Session Bean、Entity Bean、Message Driven Bea
本书明确而详尽地阐述了Java平台安全性,探究了Java安全结构的内幕。本书首先概述了计算机和网络安全概念并解释了Java安全模型,并在此基础上,详细描述了Java 2平台中新增加的许多安全结构方面的措施,同时对Java安全性的实施提出了使用指导,描绘了如何定制、扩展和精化安全结构以及成功实现的技术细节。本书为建立安全、有效、强大和可移植的Java应用程序和applet提供了重要的信息,对于致力于研究Java平台的专业人员是一本必不可少的参考书。 目目目录 前言 第1章 计算机与网络安全基础 1 1.1 密码学与计算机安全 1 1.2 危险和保护 2 1.3 外围防护 3 1.3.1 防火墙 4 1.3.2 仅仅使用外围防护的不足之处 4 1.4 访问控制与安全模型 4 1.4.1 MAC和DAC模型 5 1.4.2 对数据和信息的访问 5 1.4.3 静态和动态模型 6 1.4.4 关于使用安全模型的几点考虑 6 1.5 密码系统的使用 7 1.5.1 单向散列函数 7 1.5.2 对称密码 8 1.5.3 非对称密码 9 1.6 鉴别 9 1.7 移动代码 10 1.8 Java安全性的适用范围 11 第2章 Java语言的基本安全特点 12 2.1 Java语言和平台 12 2.2 基本安全结构 13 2.3 字节代码验证和类型安全 14 2.4 签名应用小程序 15 2.5 关于安全错误及其修复的简要历史 16 第3章 JDK1.2安全结构 19 3.1 起源 19 3.2 为什么需要一个新型的安全结构 19 3.2.1 关于applet的沙盒模型的局限性 19 3.2.2 策略和实施分离的不彻底性 20 3.2.3 安全核查的不易扩展性 20 3.2.4 对本地安装的applet过于信任 20 3.2.5 内部安全机制的脆弱性 21 3.2.6 总结 21 3.3 java.Security.General SecurityException 21 3.4 安全策略 22 3.5 CodeSource 24 3.5.1 测试等同性和利用隐含 25 3.6 许可权层次 26 3.6.1 java.security.Permission 27 3.6.2 许可权集合 28 3.6.3 java.security.Unresolved Permission 29 3.6.4 java.io.FilePermission 31 3.6.5 java.net.SocketPermission 33 3.6.6 java.security.BasicPermission 35 3.6.7 java.util.PropertyPermission 36 3.6.8 java.lang.RuntimePermission 37 3.6.9 java.awt.AWTPermission 38 3.6.10 java.net.NetPermission 38 3.6.11 java.lang.reflect Reflect Permission 39 3.6.12 java.io .Serializable Permission 39 3.6.13 java.security.Security Permission 39 3.6.14 java.security.AllPermission 40 3.6.15 许可权隐含中的隐含 40 3.7 分配许可权 41 3.8 Protection Domain 42 3.9 安全地加载类 44 3.9.1 类加载器的层次 44 3.9.2 java.lang.ClassLoader和授权 46 3.9.3 java.security.SecureClassLoader 49 3.9.4 java.net.URLClassLoader 49 3.9.5 类的路径 50 3.10 java.lang.SecurityManager 51 3.10.1 使用安全管理器的实例 51 3.10.2 JDK1.2中没有改变的API 52 3.10.3 JDK1.2中禁用的方法 53 3.11 java.security.AccessController 56 3.11.1 AceessController的界面设计 57 3.11.2 基础访问控制算法 57 3.11.3 继承方法 59 3.11.4 扩展带有特权操作的基本算法 59 3.11.5 特权操作的三种类型 61 3.11.6 访问控制语境 63 3.11.7 完整的访问控制算法 64 3.11.8 SecurityManager与 AccessController 65 3.11.9 特权操作发展史 66 3.12 小结 67 第4章 安全结构的使用 70 4.1 安装JDK1.2 70 4.2 策略配置 71 4.2.1 配置系统型和用户专用型策略 71 4.2.2 配置应用程序专用型策略 72 4.2.3 配置一个可选Policy类的实现 72 4.2.4 缺省的策略文件格式 72 4.2.5 策略文件举例 75 4.2.6 策略文件中的属性扩展 76 4.3 数字证书 77 4.4 有用的安全工具 80 4.4.1 密钥数据库 80 4.4.2 keytool 82 4.4.3 策略工具 86 4.4.4 jarsigner 88 4.4.5 代码签名实例 91 4.5 非专业安全策略管理 92 第5章 结构定制安全 94 5.1 创建新的许可权类型 94 5.2 复合许可权 95 5.3 定制安全策略 96 5.4 移植基于JDK1.1的安全管理器 97 5.4.1 JDK1.1安全管理器类 97 5.4.2 使JDK1.1安全管理器 适应JDK1.2 98 5.4.3 为JDK1.2而改进JDK1.1 安全管理器 100 第6章 对象的安全 106 6.1 安全异常 106 6.2 域和方法 107 6.3 静态域 107 6.4 私有对象状态和对象不变性 108 6.5 特权代码 109 6.6 连续性 110 6.7 内部类 111 6.8 本机方法 111 6.9 签署对象 111 6.10 密封对象 113 6.11 监护对象 114 第7章 编程密码学 117 7.1 设计原则 117 7.2 密码服务和服务提供器 118 7.3 密码类 121 7.3.1 java.security.Security 121 7.3.2 java.security.Provider 122 7.3.3 java.security.MessageDigest 122 7.3.4 java.security.Signature 123 7.3.5 算法参数 124 7.3.6 java.security.Key和java.security. spec.KeySpec 126 7.3.7 java.security.KeyFactory和java. security.cert.CertificateFactory 128 7.3.8 KeyPair和KeyPairGenerator 129 7.3.9 java.security.KeyStore 130 7.4 随机性和种子产生器 131 7.5 代码实例 132 7.5.1 实例1:计算消息摘要 132 7.5.2 实例2:产生公钥/私钥对 133 7.5.3 实例3:产生并且验证签名 134 7.5.4 实例4:读取包含证书的文件 135 7.6 标准名 136 7.6.1 消息摘要算法 136 7.6.2 密钥和参数算法 136 7.6.3 数字签名算法 137 7.6.4 随机数产生算法 137 7.6.5 证书类型 137 7.6.6 密钥库类型 137 7.7 算法 137 7.7.1 SHA-1消息摘要算法 138 7.7.2 MD2消息摘要算法 138 7.7.3 MD5消息摘要算法 138 7.7.4 数字签名算法 138 7.7.5 基于RSA的签名算法 138 7.7.6 DSA密钥对产生算法 138 7.7.7 RSA密钥对产生算法 140 7.7.8 DSA参数产生算法 140 第8章 发展方向 141 8.1 安全管理 141 8.2 JDK 特性的改善 141 8.3 Java鉴别和许可服务 142 8.3.1 主题与主体 144 8.3.2 证件 144 8.3.3 可插入和可堆叠的鉴别 144 8.3.4 回调 147 8.3.5 访问控制 147 8.3.6 JAAS工具 149 8.4 小结 149 参考文献 151
### 回答1: "java.lang.SecurityException" 是 Java 语言中的一种异常类型,表示安全管理器中检测到的安全侵犯。这种异常通常在程序尝试访问系统资源时,或者在没有足够权限执行某个操作时发生。 ### 回答2: java.lang.securityexceptionJava编程语言中常见的异常类型之一,它表示在进行操作时,Java安全管理器阻止了该操作。 Java安全管理器是一种安全机制,它为Java应用程序提供了一定的安全保障,可以控制Java应用程序的访问权限。Java安全管理器可以限制Java应用程序的文件、网络、系统、线程等访问权限,从而保护应用程序的安全性。 当Java安全管理器阻止某个操作时,就会抛出java.lang.securityexception异常。这个异常的出现通常与Java安全管理策略有关,其中可能包括Java安全策略文件或应用程序安全机制。 在开发Java应用程序时,需要注意Java安全管理器的设置和使用,否则可能会遇到java.lang.securityexception异常。针对这个异常,可以参考Java安全管理器相关文档或网上资料进行解决。常见的解决方式包括修改Java安全策略文件、设置Java安全管理器的权限等。 总之,Java安全管理器是Java编程中的一个重要机制,它保护了应用程序的安全性,但也会造成一些操作受限的问题,需要合理设置和使用。遇到java.lang.securityexception异常时,应该及时定位问题,采取有效的解决措施。 ### 回答3: java.lang.securityexceptionJava 中的一个异常类,表示发生了安全方面的异常。它通常是由于程序在运行时试图访问受到限制的资源或执行受限操作而引发的。 Java 提供了许多安全机制来保护系统的安全性,包括安全策略、访问控制、数字签名、加密等。当程序试图执行不被允许的操作时,Java 就会抛出 java.lang.securityexception 异常。 此异常通常发生在以下情况: 1.程序试图打开一个不被允许的文件或目录。 2.程序试图访问受到限制的网络资源。 3.程序试图修改受到保护的系统属性。 4.程序试图修改 Java 安全管理器中的安全策略。 5.程序试图执行违反数字签名或文件加密的操作。 为了避免 java.lang.securityexception 异常的发生,程序开发人员应该遵循以下原则: 1.不要试图在程序中修改或删除受保护的系统属性。 2.不要试图读取、写入或删除不被允许的文件或目录。 3.不要试图绕过 Java 安全管理器的安全策略。 4.不要试图执行未经数字签名或文件加密的代码。 总之,java.lang.securityexception 异常Java 中的一个重要异常类,它与 Java 的安全机制密切相关。程序开发人员应该遵循安全编码规范,避免程序运行时发生安全方面的异常

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值