自從Visa之后,微軟加強了對權限的控制。有些系統默認的目錄不能直接訪問,會彈出提示,問你是否繼續。所以普通的Jar不能直接執行,或者說執行了之后無法執行寫操作。并且點右鍵沒有以管理員身份運行的選項。所以我們需要寫一個批處理文件來解決。
當以管理員身份運行時,當前目錄就發生了變化,所以需要在開始加上:
cd /d %~dp0如果不想讓這個黑黑的CMD窗口一直顯示,可以加上:
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM
整體代碼如下:
cd /d %~dp0
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM
javaw -jar testNoah.jar


如果直接寫圖片名比如:
new ImageIcon("ico/start.png");
這時它會默認在你的項目工程下找。比如,項目工程是這樣的結構,Project1/scr/com/test/aaa.java。那它會找Project/ico/start.png,這個文件。放在這也可以。在Eclipse下執行是正常的。但如果是打成Jar包后。這個圖片文件不會被打進去。打進去也找不到。你只能在在這個打好的Jar的同級目錄下在放一個這個圖片文件、夾。雖然這樣可以解決問題。但總感覺,這個圖片屬于這個Jar的,應該跟Jar是一個整體。
所以,比較好的解決辦法是,改成這樣, new ImageIcon(getClass().getResource("/ico/start.png"))。這樣一改,它的讀取位置就是Project1/src/ico/start.png. 這樣就可以打Jar包時一起被打進來。并且在Eclipse里執行也能正常顯示。比之前那種要考文件的“高級”一些。