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

问题描述 投票:0回答:2

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

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

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

我该如何实现这一目标?

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

java intellij-idea jar executable-jar sax
2个回答
1
投票

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

java -DentityExpansionLimit=0 -jar thejar.jar

2
投票

你在这里混淆了两件事:

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

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

JAR文件只是类文件的容器。您可以通过清单(要运行的类)添加一些META信息,但这是关于它的。您无法将IntelliJ“运行时配置设置”神奇地推送到JAR中。

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

© www.soinside.com 2019 - 2024. All rights reserved.