Java 启动应用程序时使用-D选项设置运行时选项与使用System.setProperty设置之间的区别

Java 启动应用程序时使用-D选项设置运行时选项与使用System.setProperty设置之间的区别,java,Java,以下两种设置属性的方法有什么区别 启动应用程序时,例如,java-cp/usr/bin/*.jar-djava.file.path=/home/export System.setProperty(“java.file.path”,“/home/export”) 当我使用第一种方法为第三方API设置路径时,它工作正常,但第二种方法不起作用。我认为如果您希望通过jar从启动应用程序的人员/进程注入文件路径,您可以使用-D。 而System.setProperty只是设置系统属性。在第一种情况下,系统

以下两种设置属性的方法有什么区别

  • 启动应用程序时,例如,
    java-cp/usr/bin/*.jar-djava.file.path=/home/export

  • System.setProperty(“java.file.path”,“/home/export”)


  • 当我使用第一种方法为第三方API设置路径时,它工作正常,但第二种方法不起作用。

    我认为如果您希望通过jar从启动应用程序的人员/进程注入文件路径,您可以使用
    -D

    System.setProperty
    只是设置系统属性。在第一种情况下,系统属性是在JVM启动时和任何代码开始执行之前设置的。第二个仅在执行这行代码后生效。如果先前第三方库读取了该值,则不会看到该值

    @Sear Owen,实际上文件路径指向用于HSM(硬件安全模块)登录的动态链接库。如果我只使用-D选项,它就工作了,否则它就会抛出错误,说找不到动态库是的,这就是我的观点。在第二种情况下,在代码中设置属性之前,库读取属性值。