【问题标题】:java.ext.dirs System Property in JavaJava 中的 java.ext.dirs 系统属性
【发布时间】:2011-08-06 00:23:05
【问题描述】:

我在 Windows XP 操作系统上使用 JDK 1.6。运行一个简单的Java程序打印java.ext.dirs系统属性的值:

System.getProperty("java.ext.dirs")

打印:

C:\Program Files\Java\jre6\lib\ext;C:\WINDOWS\Sun\Java\lib\ext

在打印的两个目录中,第二个在我的系统上不存在,即C:\WINDOWS\Sun\Java\lib\ext 目录在我的系统中不可用。

我不明白,为什么 Java 会为 java.ext.dirs 返回这个非法目录值 财产? 我怎样才能从java.ext.dirs 属性中消除这个值?

【问题讨论】:

  • 顺便说一句——尽快迁移到 Windows XP 以上的系统……微软不再为这个老式操作系统提供安全补丁

标签: java security code-access-security


【解决方案1】:

我不明白,为什么 Java 会为 java.ext.dirs 属性返回这个非法的目录值?

它正在返回 JVM 将查看的位置。如果列表中有一个不存在的目录,我希望它会被默默地忽略。你观察到不同的东西吗?

我怎样才能从 java.ext.dirs 属性中消除这个值?

我对@9​​87654321@ 的解读是您应该能够设置该属性。 (同页解释了如何使用路径,以及如何确定默认值。)

您可能需要通过命令行进行设置;例如使用-Djava.ext.dirs=...。我希望在 JVM 引导后对属性所做的更改没有任何效果。

【讨论】:

  • 不,程序运行没有错误,但是当我启用安全管理器(-Djava.security.debug=all -Djavax.net.debug=all -Djava.security.manager)时,我可以查看消息和异常“java.lang.IllegalArgumentException: null KeyStore name at sun.security.util.PolicyUtil.getKeyStore(Unknown Source)”。我已经在上面发布了堆栈跟踪。
  • 我认为这是您无需担心的事情。如果您担心,只需创建缺少的目录......其中没有任何内容。
【解决方案2】:

这些是 Java 将在其中查找扩展的目录。如果其中一个目录不存在,则不会在那里找到扩展名——没什么大不了的,这有什么关系?

无论如何,如果您愿意,您可以在 Java 命令行中提供 -Djava.ext.dirs=PATH

【讨论】:

  • 实际上,我试图通过在我的 Java 程序中启用安全管理器来查看日志消息。我的程序没有中断,但在日志消息中我可以看到堆栈跟踪:
  • 策略:读取文件:/C:/Program%20Files/Java/jre6/lib/security/java.policy [策略解析器]:为扩展的 java.ext.dirs 路径创建策略条目:文件:/C:/Program%20Files/Java/jre6/lib/ext/* [Policy Parser]:为扩展的 java.ext.dirs 路径创建策略条目:file:/C:/WINDOWS/Sun/Java/lib/ext /* java.lang.IllegalArgumentException: 在 sun.security.provider.PolicyFile.init(Unknown Source) at sun.security.provider.PolicyUtil.getKeyStore(Unknown Source) at sun.security.provider.PolicyFile.access$400 处的 null KeyStore name (来源不明)在 sun.security.provider.PolicyFile$3.run(Unknown Sou
猜你喜欢
  • 1970-01-01
  • 2010-10-28
  • 2021-07-20
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多