2012-09-25 10 views
29

Có thay đổi trong Java 1.7 theo cách mà Locale mặc định nhận được từ hệ điều hành. Có các phương pháp khôi phục hành vi cũ, ví dụ: bằng cách đặt cờ -Dsun.locale.formatasdefault = true khi bắt đầu một cá thể JVM.Cách thiết lập thuộc tính hệ thống java sao cho nó có hiệu lực bất cứ khi nào tôi khởi động JVM mà không thêm nó vào đối số dòng lệnh

Tôi muốn đặt cờ này vĩnh viễn để tôi không phải chỉ định nó trong các đối số dòng lệnh mỗi khi tôi bắt đầu một cá thể JVM. Có một tập tin hay bất kỳ khả năng nào khác để thay đổi các thiết lập mặc định cho JVM? Một cái gì đó giống như tệp Eclipse.ini nhưng cho chính JVM?

+0

tôi don Không tin là có, nhưng bạn có thể tạo một lớp khởi động tự động thực hiện chương trình của bạn (với phương thức chính "đúng" trong một lớp khác), với các đối số dòng lệnh mong muốn hiện tại. – Vulcan

Trả lời

38

Bạn có thể đặt biến môi trường được đặt JAVA_TOOL_OPTIONS trong hệ điều hành của mình. Tất cả các công cụ Java (java, javac, ..) sẽ chọn biến này và sử dụng nó. Vì vậy, bạn có thể, ví dụ: sử dụng

SET JAVA_TOOL_OPTIONS=-Dsun.locale.formatasdefault=true 

Tôi sử dụng điều này để buộc một miền địa phương cụ thể cho mỗi JVM.

Nhưng điều này chỉ hoạt động nếu ứng dụng của bạn được bắt đầu thông qua các công cụ Java. Nếu nó là ví dụ bắt đầu từ một chương trình C gọi là jvm DLL, điều này sẽ không được sử dụng.

Edit: tôi chỉ thử nghiệm nó, và có vẻ như JAVA_TOOLS_OPTIONS cũng được nhặt khi DLL được bắt đầu (xác nhận với một ứng dụng Swing sử dụng WinRun4J như một launcher)

Xem: http://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/envvars.html

+3

Chúng tôi sử dụng '_JAVA_OPTIONS' và điều đó dường như hoạt động để sử dụng, không biết nếu điều này sẽ làm việc để gọi qua DLL mặc dù, tôi nghi ngờ nó. – MadProgrammer

+0

JAVA_TOOL_OPTIONS - đó chính xác là những gì tôi cần, cảm ơn! –

+0

@Bugpecker, bạn có thể chấp nhận câu trả lời sau đó. ;) – Vadzim

Các vấn đề liên quan