程式狂想筆記

一個攻城師奮鬥史

0%

Java System Properties

常常看到java -Dxxx="test" com.xxx.Class 程式,不太了解-D帶入程式運作,今天特別整理一下,順便筆記。

抓取 Java 系統參數(非環境變數)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
java.version 	Java 執行期環境版本
java.vendor Java 執行期環境供應商
java.vendor.url Java 供應商的 URL
java.home Java 安裝目錄
java.vm.specification.version Java 虛擬機規範版本
java.vm.specification.vendor Java 虛擬機規範供應商
java.vm.specification.name Java 虛擬機規範名稱
java.vm.version Java 虛擬機實現版本
java.vm.vendor Java 虛擬機實現供應商
java.vm.name Java 虛擬機實現名稱
java.specification.version Java 執行期環境規範版本
java.specification.vendor Java 執行期環境規範供應商
java.specification.name Java 執行期環境規範名稱
java.class.version Java 類別格式版本號
java.class.path Java 類別路徑
java.library.path 加載庫時搜索的路徑串列(linked-list)
java.io.tmpdir 預設的暫時檔路徑
java.compiler 要使用的 JIT 編譯器的名稱
java.ext.dirs 一個或多個擴展目錄的路徑
os.name 作業系統 的名稱
os.arch 作業系統 的架構
os.version 作業系統 的版本
file.separator 檔分隔設定(在 UNIX 系統中是“/”)
path.separator 路徑分隔設定(在 UNIX 系統中是“:”)
line.separator 行分隔設定(在 UNIX 系統中是“/n”)
user.name 用戶的賬戶名稱
user.home 用戶的主目錄
user.dir 用戶的當前工作目錄

但還是可以自訂。

要怎麼看程式有哪些 System Properties,可以參考Java System Properties - HowToDoInJava

1
2
3
4
5
6
7
8
9
10
11
import java.util.Properties;

public class PrintSystemProperties
{
public static void main(String[] a)
{
// List all System properties
Properties pros = System.getProperties();
pros.list(System.out);
}
}
1
java -DPATH PrintSystemProperties

1
java -DPATH="123Test" PrintSystemProperties

抓取環境變數

1
String sysEnvStr = System.getenv("JAVA_HOME");

參考: java - How to I obtain the value of the environment variables? - Stack Overflow

其他相關:

System (Java Platform SE 7 ))

System.getProperty的參數用法 @ 符碼記憶

Java 使用 Docker run 選擇方法

  1. 一般方式
    參考:
    java - How to pass System property to docker containers? - Stack Overflow

  2. JAVA_OPTIONS 環境變數設定(推薦)

1
JAVA_OPTIONS: "-Xmx2g -Dcom.realobjects.pdfreactor.webservice.threadPoolSize=4"

參考:
Docker conatiner: Get passed environment varaible in tomcat spring mvc application - Server Fault

  1. 一般run 指定程式執行路徑,順便放system properties