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

为什么System.setProperty()在运行时不能更改类路径?

艾意蕴
2023-03-14
问题内容

我阅读并发现在 System类下有一些函数作为getproperties,我们可以在其中检索属性,然后也可以使用setProperties()对其进行设置。

但是我得到的答案是它不会工作。我自己还没有尝试过,但是,我正在接听电话。

只是为了澄清一下,如果这些setProperty()和getProperty()方法无法在运行时更改它们,为什么会存在它们。还是仅特定于classpath属性?

如果有人可以提出他们真正有用的方案,我将不胜感激。


问题答案:

当然,您可以随时设置所需的任何系统属性。问题是,这会产生影响吗?对于类路径,答案为否。系统类加载器是在启动序列的很早的时候初始化的。它将类路径复制到其自己的数据结构中,并且不会再次读取classpath属性。对其进行更改不会影响系统。

其原因可能有两个。较少的原因是性能。您可能需要构建某种数据结构来快速查找资源,并且每次重新解析类路径都可能效率低下。更重要的原因是安全性。您不希望流氓类更改您自己下的类路径并加载其他类的受侵害版本。



 类似资料:
  • 在学习和使用spring-boot之后,我了解了spring-boot ConditionalOnClass的用法和逻辑,我的问题是: < li >为什么“因为这个注释是通过加载类字节码来解析的,所以在这里指定最终可能不在类路径上的类是安全的”。 < li >与此相关的JVM规范在哪里? https://github.com/spring-projects/spring-boot/blob/mas

  • 下载chromedriver并解压缩它。

  • 我正在将代码从Processing移植到Netbeans Java。我在运行多个java类时遇到问题。我的代码分为14个类,其中我的主要类仅包括这组代码: 无论项目何时运行,都只会弹出一个灰色背景的小屏幕,然而,仅此而已。在我看来,它无法读取其他13个类的所有代码。有什么想法吗?

  • 问题内容: 如何在运行时更新此环境变量,以便ctypes可以在任何地方加载库?我尝试了以下方法,但似乎都没有用。 问题答案: 在运行诸如Python之类的程序时,动态加载程序(ld.so.1或类似的文件)已经读取LD_LIBRARY_PATH,并且此后将不会注意到任何更改。因此,除非Python软件本身评估LD_LIBRARY_PATH并使用它来构建可能的库路径名或要使用的等效函数,否则在脚本中设

  • 我在不同的地方对此进行了研究,包括stackoverflow,但我找不到一个对我有帮助的答案。 我使用的是Windows 7,64位,Atom用于64位Windows。我在目录C:\Users\Austin\Documents\Python中安装了Python 3.6.1。当我试图在Atom中运行一个简单的脚本来测试Python时,它说 “python”不被识别为内部或外部命令、可操作程序或批处理

  • 我使用Python 3.7、JRE 8、JDK 1.8在Eclipse(Eclipse plugins:PyDev)上安装了带有Hadoop2.6的Pysark2.1。 在scala.collection.maplike$class.default(maplike.scala:228) 在scala.collection.abstractmap.default(map.scala:59) 在sca