2010-07-28 76 views

回答

0

純Java應用程序:

System.getProperty("org.xml.sax.driver") 
System.getProperty("java.version") 
System.getProperty("java.vm.version") 
System.getProperty("os.name") 
System.getProperty("os.version") 
System.getProperty("os.arch") 
+3

也許System.getProperties()。列表來獲得所有這些? – 2010-07-28 13:13:02

2

除了明顯的細節 - 異常堆棧跟蹤 - 的更多信息,你可以得到的是更好。所以你應該得到所有的系統屬性以及環境變量。另外如果您的應用程序有一些設置,請獲取所有值。當然,你應該把所有這些信息到你的日誌文件,我用的System.out她簡單:

System.out.println("----Java System Properties----");  
System.getProperties().list(System.out); 

System.out.println("----System Environment Variables----"); 
Map<String, String> env = System.getenv(); 
Set<String> keys = env.keySet(); 
for (String key : keys) { 
    System.out.println(key + "=" + env.get(key)); 
} 

在大多數情況下,這將是「太多」的信息,但大多數情況下,堆棧跟蹤會足夠。一旦你將得到一個棘手的問題,你會很高興,你有所有的「額外」信息

+0

通過運行此代碼我得到許多關鍵字行和它們的值。在這個問題上,我對「sun.java.command」的重要工作產生懷疑。這個關鍵詞有什麼用,我正在尋找打印的東西,windows工作站/會話/屏幕鎖定和解鎖時間。 – 2012-04-19 11:47:52

0

此外,Java Servlet的應用:

response.getCharacterEncoding() 
request.getSession().getId() 
request.getRemoteHost() 
request.getHeader("User-Agent") 
pageContext.getServletConfig().getServletContext().getServerInfo() 
0

有一件事情能真正幫助我 - 看看我的類從哪裏加載。

obj.getClass()。getProtectionDomain()。getCodeSource()。getLocation();

注意:protectiondomain可以爲空,因爲可以代碼源所以做所需的空檢查