我应该如何将系统 属性 选项传递给我的 jar 文件?

How should I pass a System Property options to my jar file?

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

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

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

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

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

你在这里混淆了两件事:

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

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

JAR 文件只是 class 文件的容器。您可以通过清单(class 到 运行)添加一些元信息,仅此而已。您无法神奇地将 IntelliJ "runtime configuration settings" 推送到 JAR。

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

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

java -DentityExpansionLimit=0 -jar thejar.jar