Sự khác biệt giữa các thuộc tính hệ thống System.getProperIES () và các biến môi trường System.getenv () trong JVM là gì?
Sự khác biệt giữa các thuộc tính hệ thống System.getProperIES () và các biến môi trường System.getenv () trong JVM là gì?
Câu trả lời:
Tôi nghĩ rằng sự khác biệt giữa hai sôi xuống để truy cập. Các biến môi trường hệ thống có thể được truy cập bởi bất kỳ quy trình nào và các thuộc tính hệ thống Java chỉ có thể được truy cập bởi quy trình mà chúng được thêm vào.
Cũng như Bohemian đã nêu, các biến env được đặt trong HĐH (tuy nhiên chúng có thể được đặt thông qua Java) và các thuộc tính hệ thống được chuyển qua dưới dạng tùy chọn dòng lệnh hoặc được đặt qua setProperty()
.
Các thuộc tính hệ thống được đặt trên dòng lệnh Java bằng-Dpropertyname=value
cú pháp. Chúng cũng có thể được thêm vào lúc chạy bằng cách sử dụngSystem.setProperty(String key, String value)
hoặc thông qua cácSystem.getProperties().load()
phương thứckhác nhau
.
Để có được một tài sản hệ thống cụ thể,bạn có thể sử dụngSystem.getProperty(String key)
hoặcSystem.getProperty(String key, String def)
.
Các biến môi trường được đặt trong HĐH, ví dụ như trong Linuxexport HOME=/Users/myusername
hoặc trên WindowsSET WINDIR=C:\Windows
, v.v., và không giống như các thuộc tính, có thể không được đặt trong thời gian chạy.
Để có được một biến môi trường cụ thể,bạn có thể sử dụngSystem.getenv(String name)
.
System.grtProperties()
liệt kê tất cả các thuộc tính và những thuộc tính được đặt từ dòng lệnh sẽ ở đó, nhưng không có cách nào để phân biệt chúng với các thuộc tính khác được hệ thống thêm vào, nếu đó là những gì bạn đang hỏi.
JAVA_TOOL_OPTIONS
.
System.getenv(String name)
không tự động đọc giá trị từ hệ thống tại thời điểm cuộc gọi.