我在使用Windows 2008服務器時遇到了一個相當不好的問題。我們有一個使用本地服務用戶作爲服務運行的Java應用程序。問題是這個用戶沒有權限讀/寫指定的java tmp目錄(由系統指定)。這意味着每次應用程序嘗試創建一個tmp文件時都會拋出IOException。在Windows 2008服務上使用java服務的Tmp問題
有沒有什麼辦法讓需要訪問tmp目錄作爲服務運行沒有一個Java應用程序:
我在使用Windows 2008服務器時遇到了一個相當不好的問題。我們有一個使用本地服務用戶作爲服務運行的Java應用程序。問題是這個用戶沒有權限讀/寫指定的java tmp目錄(由系統指定)。這意味着每次應用程序嘗試創建一個tmp文件時都會拋出IOException。在Windows 2008服務上使用java服務的Tmp問題
有沒有什麼辦法讓需要訪問tmp目錄作爲服務運行沒有一個Java應用程序:
是否有一個原因,你不能給'NT AUTHORITY \ LocalService'帳戶權限寫入到Java的默認臨時目錄?
從http://www.rgagnon.com/javadetails/java-0484.html
用於存放臨時文件的目錄的位置由屬性java.io.tmpdir定義。
默認值可以用來啓動JVM的命令行來改變:
java -Djava.io.tmpdir=C:\mydir myClass
,或者在Windows上,可以將環境變量TMP設置爲不同的值。
即使這樣做,對於安裝您的軟件的用戶來說,這似乎是一個惱人的步驟。這是問題java使用無效的java.io.tmpdir或tmp目錄上的操作系統權限問題? – jnorris 2010-09-25 03:18:27
@jnorris的確。在Windows LocalService帳戶下作爲服務運行時有特定的限制,包括阻止大多數出站網絡呼叫......但如果將java.io.tmpdir設置爲網絡驅動器,這將非常不尋常。所以我同意,它可能會得到一個不好的價值,並且可以/應該直接在命令行上設置(如@crowne所示)。 – ewall 2010-09-28 00:08:44