java的-D选项作用

本文详细介绍了Java系统属性的获取与修改方法,并展示了如何创建自己的程序属性,包括查看默认系统属性、使用java-D参数修改属性及创建自定义属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.java已有默认系统属性,通过:System.getProperties().list(System.out);查看,结果如下:
-- listing properties --
java.runtime.name=Java(TM) SE Runtime Environment
sun.boot.library.path=D:\java\jdk1.6.0_23\jre\bin
java.vm.version=19.0-b09
java.vm.vendor=Sun Microsystems Inc.
java.vendor.url= http://java.sun.com/
path.separator=;
java.vm.name=Java HotSpot(TM) Client VM
file.encoding.pkg=sun.io
user.country=CN
sun.java.launcher=SUN_STANDARD
sun.os.patch.level=
java.vm.specification.name=Java Virtual Machine Specification
user.dir=E:\workspace\javad\javad
java.runtime.version=1.6.0_23-b05
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=D:\java\jdk1.6.0_23\jre\lib\endorsed
os.arch=x86
java.io.tmpdir=C:\Users\ADMINI~1\AppData\Local\Temp\
line.separator=
java.vm.specification.vendor=Sun Microsystems Inc.
user.variant=
os.name=Windows 7
sun.jnu.encoding=GBK
java.library.path=D:\java\jdk1.6.0_23\bin;.;C:\Windows\...
java.specification.name=Java Platform. API Specification
java.class.version=50.0
sun.management.compiler=HotSpot Client Compiler
os.version=6.1
user.home=C:\Users\Administrator
user.timezone=
java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=GBK
java.specification.version=1.6
user.name=Administrator
java.class.path=E:\workspace\javad\javad\target\test-...
java.vm.specification.version=1.0
sun.arch.data.model=32
java.home=D:\java\jdk1.6.0_23\jre
java.specification.vendor=Sun Microsystems Inc.
user.language=zh
awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode, sharing
java.version=1.6.0_23
java.ext.dirs=D:\java\jdk1.6.0_23\jre\lib\ext;C:\Wi...
sun.boot.class.path=D:\java\jdk1.6.0_23\jre\lib\resources...
java.vendor=Sun Microsystems Inc.
file.separator=\
java.vendor.url.bug= http://java.sun.com/ cgi-bin/bugreport...
sun.cpu.endian=little
sun.io.unicode.encoding=UnicodeLittle
sun.desktop=windows
sun.cpu.isalist=pentium_pro+mmx pentium_pro pentium+m...
2.可以使用java -D修改这些属性,也可以创建自己的程序属性,如:java -Djava.io.tmpdir=d:\,修改临时文件存放目录
### 如何在 Java 中强制使用 IPv4 在 Java 应用程序中,可以通过设置 JVM 参数来控制网络协议栈的行为。为了强制应用程序仅使用 IPv4 协议,可以利用 `-D` 参数配置 `java.net.preferIPv4Stack=true`。 此参数的作用是指示 Java 虚拟机优先选择 IPv4 协议栈而不是 IPv6 协议栈[^1]。当该属性被启用时,即使系统支持 IPv6 地址,Java 的网络操作也会默认绑定到 IPv4 地址上。 以下是具体实现方法: #### 设置 JVM 参数 通过命令行运行 Java 程序时,可以直接传递上述参数: ```bash java -Djava.net.preferIPv4Stack=true -jar YourApplication.jar ``` 如果是在 IDE(如 IntelliJ IDEA 或 Eclipse)中运行项目,则可以在运行配置的 VM options 部分添加以下选项: ``` -Djava.net.preferIPv4Stack=true ``` #### 示例代码验证 下面是一个简单的测试代码片段,用于确认当前使用的 IP 版本是否为 IPv4: ```java import java.net.InetAddress; public class TestIPv4 { public static void main(String[] args) throws Exception { System.setProperty("java.net.preferIPv4Stack", "true"); InetAddress localhost = InetAddress.getLocalHost(); String hostAddress = localhost.getHostAddress(); if (hostAddress.contains(":")) { System.out.println("Using IPv6 address: " + hostAddress); } else { System.out.println("Using IPv4 address: " + hostAddress); } } } ``` 执行以上代码后,如果成功启用了 IPv4 只模式,则会打印类似于 `Using IPv4 address: 192.168.1.100` 的消息。 需要注意的是,在某些情况下,操作系统本身的网络配置可能会影响这一行为。因此建议检查系统的 DNS 和路由表设置以确保其兼容性[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值