Contents

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

https://i.imgur.com/2QAbEBt.png

1
java -DPATH="123Test" PrintSystemProperties

https://i.imgur.com/THTX5R1.png

抓取環境變數

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