You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HP-UX运行不可修改的Java Jar包时伪造os.name属性的方案咨询

可行解决方案

JVM的系统属性支持通过启动参数覆盖,System.getProperty读取的是可配置的属性表,你可以通过以下两种方式自定义os.name的返回值:

方法1:命令行直接指定(单次运行推荐)

Java启动时通过-D参数主动覆盖默认的系统属性值,-D参数必须放在-jar参数前才会生效,命令如下:

# 让os.name返回FreeBSD
java -Dos.name="FreeBSD" -jar myjar.jar

如果需要返回OpenBSD,替换对应参数值即可:

# 让os.name返回OpenBSD
java -Dos.name="OpenBSD" -jar myjar.jar

注意:如果将-D参数放在-jar之后,会被识别为Jar包的启动参数传入main方法,无法实现修改系统属性的效果。

方法2:环境变量全局配置(多次运行推荐)

如果需要多次运行该Jar包,可以设置JAVA_TOOL_OPTIONS环境变量,让所有当前会话下的Java进程自动读取该配置,无需每次添加-D参数:

  1. 在当前shell会话中设置环境变量:
export JAVA_TOOL_OPTIONS="-Dos.name=\"FreeBSD\""
  1. 后续直接执行Jar包启动命令即可:
java -jar myjar.jar

该配置仅对当前shell会话生效,关闭终端后自动失效。

补充说明

如果Jar包后续还有其他系统属性校验(比如os.version、os.arch等),都可以用同样的-D参数格式追加配置,示例如下:

java -Dos.name="FreeBSD" -Dos.version="13.2" -Dos.arch="amd64" -jar myjar.jar

内容的提问来源于stack exchange,提问作者stat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 22:06:02