从 Java 中的外部文件读取垃圾收集 (GC) 配置 | Spring开机

Read the Garbage Collection (GC) configuration from external file in Java | Spring Boot

运行 具有给定 GC 配置的 spring 引导 jar 文件

但是,当我们是 运行 像

这样的 jar 时,而不是在命令行中传递所有这些 GC 信息数据
java -Dspring.profiles.active=<env-name> -Xmx5G -Xms2G -XX:MaxMetaspaceSize=2G -XX:+UseG1GC -Xloggc:/file/path/gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintGCDetails -jar application.jar

我可以使用任何其他方法从外部文件读取配置并将其传递给 jar

编辑:

正如 Slaw 在使用 java Command-Line Argument Files

的评论中提到的

创建了一个名称为 args 的文件,其中包含的数据是

-Dspring.profiles.active=<env-name> -Xmx5G -Xms2G -XX:MaxMetaspaceSize=2G -XX:+UseG1GC -Xloggc:/file/path/gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintGCDetails -jar application.jar

by 运行 jar 喜欢

java @args

出现错误

Error: Could not find or load main class @args

无法找到 Main class。我认为它没有识别 args 文件中的 jar。

如果您使用的是 Java 9 及更高版本,command line argument files (@file1) 应该 工作1.

Java 9 及更高版本的另一个选项是设置 JDK_JAVA_OPTIONS 环境变量。这给出了一个选项列表,这些选项将自动添加到 java 命令行的 JVM 选项之前。

对于 Java 8 及更早版本,您的选择更加有限:

  • java 命令或应用程序的命令行编写 shell 包装脚本、shell 函数或 shell 别名。

  • 使用java命令时显式添加环境变量;例如

       $ java $STD_OPTS my.app.Main args ...
    
  • 你可以想象实现一个自定义启动器(在 C 中),并且可以做一些聪明的事情,比如模拟 Java 9 的 @file 机制。


1 - 根据症状,我认为您使用 @file 的尝试失败了,因为在适当的目录中找不到该文件,或者因为您正在使用 Java 8 或更早。