【问题标题】:How should I pass a System Property options to my jar file?我应该如何将系统属性选项传递给我的 jar 文件?
【发布时间】:2023-03-24 10:20:01
【问题描述】:

我编写了一个小应用程序来解析大型 XML 文件,使用 SAX 和 Intellij。

我通过转到 Run\Edit Configurations... 并设置 VM 选项将 -DentityExpansionLimit=0 选项传递给我的应用程序。

当我使用 Intellij 运行应用程序时,它可以完美运行,但是当我使用 intellij 创建工件时它不起作用,并且我收到需要设置该选项的错误。很明显,该选项没有传递给创建的 jar 文件。

我应该如何实现这个目标?

是否有任何我使用批处理文件或其他东西创建的命令来为我的用户设置此选项?我可以修改任何设置文件来为我的机器设置此选项吗? (我使用的是 Windows 10)

【问题讨论】:

    标签: java intellij-idea jar executable-jar sax


    【解决方案1】:

    通常,要将系统属性发送到 jar,命令是这样的:

    java -DentityExpansionLimit=0 -jar thejar.jar
    

    【讨论】:

      【解决方案2】:

      你在这里混淆了两件事:

      • JVM 命令行命令,以及您可以将 arguments 传递给您的应用程序,或将 properties 传递给 JVM 本身这一事实
      • 您的部署工件(可能是 JAR 文件)

      含义:您似乎想将命令行参数(给某些主函数)或属性传递给您的应用程序。但是 JAR 文件不支持。

      JAR 文件只是类文件的容器。您可以通过清单(要运行的类)添加一些 META 信息,但仅此而已。您不能神奇地将您的 IntelliJ“运行时配置设置”推入 JAR。

      换句话说:IntelliJ 无法将这些值放入您的 JAR。 当您调用 java -jar Your.jar ... 时,(或其他一些工具)必须将所需的值添加到命令行。

      【讨论】:

        猜你喜欢
        • 2015-06-30
        • 1970-01-01
        • 2017-03-02
        • 2021-01-02
        • 1970-01-01
        • 1970-01-01
        • 2011-03-13
        • 2015-03-18
        相关资源
        最近更新 更多