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



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

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

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

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

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

通常,要将系统属性发送到jar,命令如下所示:

java -DentityExpansionLimit=0 -jar thejar.jar

你在这里混淆了两件事:

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

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

JAR 文件只是类文件的容器。您可以通过清单(要运行哪个类(添加一些 META 信息,但仅此而已。你不能神奇地将 IntelliJ 的"运行时配置设置">推送到JAR 中。

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

最新更新