看此文前請保證jar包中有至少一個Main方法入口,及圖形化的界面。
并保證META-INF/MANIFEST文件中的Main-Class已經指向之前實現的main方法入口。
最近硬盤壞了,于是重新安裝了OS,發現拷貝后的jdk或jre(未經安裝的版本),不能打開jar文件執行(jdk版本1.6_11),
于是在打開方式中指向了javaw程序,發現無效,并提示"cannot find main class", 與此同時windows把jar類型的文件關聯到了
指定的javaw程序上,上網找了一通,沒有人提及這個問題的解決辦法,而顯然這個問題又不是由開篇中提到的問題導致的。
于是在注冊表中當前用戶配置中刪除了當前jar類型的定義。但是重新嘗試后依然無效。
于是重新安裝了jdk,發現這次可以打開jar文件了,并且這次用來打開的程序從打開方式來看仍然是javaw。
比較注冊表中文件類型的定義,并沒有差別。從文件夾選項 -> 文件類型來看終于看到了差別,
高級里面的open操作定義如下:
"C:\Program Files\Java\jre6\bin\javaw.exe" -jar "%1" %*
而如果我們自己選擇javaw,默認的open操作是沒有 -jar參數的,必須手工加進去。
我們知道java啟動jar包的參數是 -jar,但是記得以前javaw是可以直接打開jar的,不知什么時候起也需要帶有-jar參數了。
所以對于一個拷貝的綠色jre只要修改一下open操作的定義就可以解決上面的問題了。
解決了上面的問題,又產生了新的問題,之前選擇打開的javaw程序在打開方式中丟不掉了,比較多余,這個可以在注冊表中修改
在HKEY_CLASSES_ROOT\Applications下面找到響應的程序刪除就可以了,原來每次用一個程序打開一個類型的文件windows都會在
注冊表中這個地方留下相關的記錄
@2008 楊一. 版權所有. 保留所有權利