当前位置: 首页 > 面试题库 >

为什么需要`java.lang.SecurityException:禁止的包名称:java`?

陶鸿畴
2023-03-14
问题内容

我创建了一个类“ String”,并将其放置在“ java”包中[实际上,我想创建 java.lang 以查看classLoader将哪个类加载为

一旦将一个类加载到JVM中,就不会再次加载相同的类(我再说一遍,相同的类)

引用于oreilly]。但是后来那件事,为什么在运行此类时我得到
java.lang.SecurityException:禁止的包名称: java

出于安全原因,java不允许我在 java 程序包中有一个类?如果没有这种检查该怎么办?


问题答案:

绝对
不允许用户代码将类放入标准Java软件包之一中。这样,用户代码无法访问Java实现中的任何程序包专用类/方法/字段。这些软件包专用对象中的某些允许访问JVM内部。(我SharedSecrets特别在考虑。)



 类似资料:
  • 我从eclipse编译了jar文件(package required lib...),然后当我运行它时,它给我SecurityException:禁止的包名称:java.sql,当我在eclipse中运行代码时,这不会发生。 我看到很多人指出将其中一个包命名为“java.*”可能会导致问题,但我仔细检查了一下,没有一个包命名为“java.{somthing}”。 以下是完整的错误跟踪: 操作系统:

  • 问题内容: 实际上,这完全是理论上的问题。但是有趣的是,为什么Java规范不允许在包中使用大写字母,并导致这样写: 代替 问题答案: 直接从Oracle Docs 包名称以小写形式编写,以避免与类或接口的名称冲突。

  • 问题内容: 据我所知,如果字体包含空格,则需要使用双引号或单引号,例如: 但是在Google字体上,我也看到了 有些人甚至这样使用它: 我觉得这很奇怪,因为以下方法也可以: 那么CSS中字体名称周围引号的正确用法是什么? 问题答案: 您可以随时把一个特定的字体系列名称在引号,双或单,所以,和是等价的。仅CSS定义的通用字体系列之类的名称必须不带引号。 与流行的看法相反,字体名称由空格分隔的名称组成

  • 我正在编写一个主题建模程序,使用Apache Tika从其他文件类型中提取文本内容。实际上,它在Eclipse上运行得很好。但是当我从窗口10的命令提示符导出到JAR文件使用时。当它尝试代码时会出现以下错误消息:“parser.parse(stream,handler,metadata,parseContext);” 我没有在这里上传我的java代码,因为我不认为它们是问题的根源。因为它可以在Ec

  • 问题内容: 如果你碰巧有 在程序(或模块)的中间,您将得到警告: 我理解为什么通常不鼓励这样做(命名空间不可见),但是在很多情况下,这样做很方便,尤其是在不与任何人共享代码的情况下。 那么,谁能准确地详细解释为什么在所有可能的情况下都应禁止这样做? 问题答案: 我相信通过“在您的程序中间”,您正在谈论函数定义 内 的导入: 不允许这样做,因为这会使优化函数主体过于困难。Python实现希望在对函数

  • 问题内容: 在较高的层次上,我知道我们需要通过使用它们各自的包装类在Java集合中使用它们来“包装”原始数据类型,例如int和char。我想了解Java集合如何在低级询问:“为什么我们需要将原始数据类型包装为对象才能在集合中使用它们?”在此先感谢您的帮助。 问题答案: 在虚拟机级别,这是因为与引用类型(例如java.lang.Object及其派生类型)相比,原始类型在内存中的表示方式非常不同。例如