Java系统环境变量
Java是否有一个默认的系统环境变量,在我们设置它时将始终读取/追加? CATALINA_OTPS
/ JAVA_OPTS
等似乎仅适用于TOMCAT / JBOSS等。
- 我不想通过Java系统属性(通过-Dprop1 = value1 -Dprop2 = value2传入)来设置它,因为它涉及shell /批处理脚本。
- 它应该适用于操作系统,例如在Windows中双击jar文件。
- 它应该适用于不同的JRE(Sun,IBM,OpenJDK等)。
- 它不应该涉及额外的编码。
- 它应该在大多数库配置文件中工作,比如设置log4j level $ {LOG_LEVEL}。
更新 :添加了项目#4和5.从标题中删除操作系统以使我的问题更清晰。
更新2 :在查看Perception的答案后,似乎我的第2项和第3项可以通过System.getenv
实现。 如何实现第4项和第5项?
以下是场景示例:想象一下,现在JAVA_DEFAULT_OPTS
是一个环境变量,将由Java读取,因为它现在已成为标准。 在开发台式机上,我设置了JAVA_DEFAULT_OPTS=-DLOG_LEVEL=DEBUG -Xmx384m
; 在生产服务器计算机上,客户设置JAVA_DEFAULT_OPTS=-DLOG_LEVEL=INFO -Xmx1024m
。 当我/用户双击Windows上的jar文件时,应用程序将运行不同的log4j级别和最大内存堆大小。
有一个名为_JAVA_OPTIONS的特殊环境变量,它的值将由JVM(java.exe)获取。
在Windows中:
set _JAVA_OPTIONS=-Xms64m -Xmx128m -Dawt.useSystemAAFontSettings=lcd
在Linux中:
export _JAVA_OPTIONS='-Xms64m -Xmx128m -Dawt.useSystemAAFontSettings=lcd'
对于Java Web Start,它是JAVAWS_VM_ARGS 。 对于javaw.exe(Applet),它是_JPI_VM_OPTIONS 。
Java有一个标准的OS系统环境变量,它在启动JVM时始终设置:
- os.name
- os.arch
- os.version
所有都可以通过’System.getProperty(propertyName)`访问
如果您需要更多内容,则可以始终使用Management API 。
- 如何修复或更正IntelliJ Idea中的“默认文件模板”警告
- Spark提交失败,包含java.lang.NoSuchMethodError:scala.Predef $。$ conforms()Lscala / Predef $$ less $ colon $ less;
- 将max和min JVM堆大小设置为相同是否合适?
- 在调用getter之后执行业务逻辑
- 事务TransactionImple ActionStatus.ABORTED已经回滚
- 在Java中,为什么我不能在父类中声明最终成员(没有初始化它)并在子类中设置它的值? 我该如何解决?
- 当Java计算一个连词( && )时,如果exp1为false,它是否eval exp2?
- 让MySQL或MS SQL Server通知Java程序表已更新
- 如何在我的自定义组件中使用IncludeHandler?