2011-01-04 38 views
10

Tôi có một TOOLS_DIR tài sản mà tôi xuất khẩu trong bashSystem.getProperty trả về null cho định nghĩa tài sản

Tôi có dòng sau trong file java của tôi:

Chuỗi toolsDir = System.getProperty ("TOOLS_DIR") ;

Tại sao điều này trả về giá trị rỗng? vấn đề tương thích với Linux hoặc cái gì đó là gì?

Trả lời

20

Biến môi trường và thuộc tính không giống nhau. Nếu bạn muốn vượt qua trong một biến môi trường như bất động sản, bạn phải thêm dòng sau vào gọi java của bạn:

-DTOOLS_DIR = $ TOOLS_DIR

Ngoài ra, bạn có thể sử dụng System.getenv().

+0

Cảm ơn tôi đã có cùng một vấn đề ngày hôm nay. – Hemant

6

Thuộc tính hệ thống Java không liên quan gì đến biến môi trường shell.

Bạn có thể gán thuộc tính hệ thống java khi bạn gọi máy ảo, ví dụ:

java -DTOOLS_DIR=/somewhere org.example.MyClass 
3

Hãy thử điều này thay vì:

String toolsDir = System.getenv("TOOLS_DIR"); 

Các getProperty (...) phương thức trả về java vm các thuộc tính (như user.dir, java.version). Phương thức getenv (...) dành cho các biến môi trường.