我受到另一个问题的启发:Java系统属性的最佳实践。我正在寻找完整的Java系统属性列表和可能的值。我正在编写一个简单的类来简化它们的使用(如果你感兴趣,可以获取源代码和背景信息(我的博客))。通过这个类,我试图提供以下内容:
编辑:
我不是在寻找由System.getProperties()描述的标准属性或所有在我的系统上可用的属性。我试图创建一个全面的系统属性列表 - 即使是供应商、JVM或版本相关的属性 - 那些不能保证存在且文档稀少或难以找到的属性。像以下这些属性:
- 简单而一致的访问Java系统属性(没有字符串常量)
- 完整的文档可用属性及其可能的值 - 在我的IDE中(即自动完成,行内Javadoc)
- 修复返回值和/或命名中的不一致性
- 确保java.io.tmpdir存在 - 实际上这就是我做所有这些的主要原因 :)
编辑:
我不是在寻找由System.getProperties()描述的标准属性或所有在我的系统上可用的属性。我试图创建一个全面的系统属性列表 - 即使是供应商、JVM或版本相关的属性 - 那些不能保证存在且文档稀少或难以找到的属性。像以下这些属性:
- sun.desktop(仅限Linux,例如“gnome”),
- awt.toolkit(仅限Mac,例如apple.awt.CToolkit)
- sun.cpu.endian(Sun JVMs only)
- ...
String file = SystemProperty.JAVA_IO_TMPDIR + "file.txt";
替代
String tmp = System.getProperty("java.io.tmpdir");
if (!tmp.endsWith(File.separator)
tmp += File.separator;
new File(tmp).mkdirs(); // make sure tmp exists
String file = tmp + "file.txt";
请运行该代码并发布您的发现。以下是一个简单的脚本,可帮助您入门:
#!/bin/bash
# download and run
# you should really look at the code first, as you can't be sure
# that I'm a trustworthy guy ;)
wget -N http://techblog.molindo.at/files/SystemProperty.java
javac SystemProperty.java
java SystemProperty
(我知道这不是一个真正的问题,而是一个众包的事情。我希望没人介意)
Bounty:
由于没有正确的答案,赏金将授予发现最多新系统属性的人。提示:测试非标准JVM(J2ME,Android,GCJ,OpenJDK,Apache Harmony等)和JVM上的常见语言(Groovy,Scala,JRuby等)应特别有益。
当前领导者:
- rsp 发现了19个属性
- Boris 发现了14个属性
- Joa Ebert 发现了8个属性
- Suraj Chandran 发现了1个属性
顺便说一句,我计划将最终结果发布为Maven artifact并上传到中央仓库,只要我得到足够的输入。
更新:公共存储库
SystemProperty.java现已在GitHub上提供,作为molindo-utils项目的一部分。 molindo-utils目前可通过Sonatype的OSS存储库的1.0-SNAPSHOT获得。一旦它准备好发布,它也将同步到Maven中央仓库。
<repositories>
<repository>
<id>oss.sonatype.org</id>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
<releases><enabled>false</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>at.molindo</groupId>
<artifactId>molindo-utils</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
http.proxyHost
和http.proxyPort
? - The111