![](/img/trans.png)
[英]Could not find main class when double clicking jar- tried quite a few solutions
[英]“Could not find the main class” when double-clicking .jar file
第一:我意識到這個問題應該很簡單,很多人似乎都經歷過這個問題。 但是,看來我的問題可能與現有帖子略有不同。
我正在使用NetBeans來編譯Java應用程序。 完成構建后,輸出正確進入dist \\文件夾。 那里有jar文件。 如果我轉到命令行,請導航到該文件夾,然后調用以下命令:
java -jar Prosperity.jar
一切正常。 顯然,應用程序的名稱是Prosperity。 以下命令也可以正常工作:
javaw -jar Prosperity.jar
但是,雙擊.jar文件會顯示消息:“找不到主類:”,然后提供.jar文件的路徑。 我已經檢查過一百次.jar文件中存在META-INF文件夾,並且其中存在一個具有正確主類名的MANIFEST.MF。 我還檢查了.jar文件中是否存在主類(App.class).class文件。
所以問題是:雙擊文件和運行javaw之間的區別是什么? 它真的令人沮喪,它不會只是運行!
謝謝你可以給我的任何方向,我是tearin'我的頭發在這里!
也許你的文件關聯搞砸了。 在命令提示符下,嘗試運行
ftype | find "jarfile"
在我的64位Windows 7計算機上,顯示
jarfile="C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -jar "%1" %*
您也可以使用ftype
更改它:
ftype jarfile="C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -jar "%1" %*
剛發現這篇帖子......
如果只有在雙擊jar文件而不是cmd啟動時遇到問題,可能是因為JRE的版本錯誤(6代替7)。
只需更改regedit中的值:
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\jarfile\\shell\\open\\command] "C:\\Program Files (x86)\\Java\\jre6\\bin\\javaw.exe" -jar "%1" %*
至 :
"C:\\Program Files\\Java\\jre7\\bin\\javaw.exe" -jar "%1" %*
如果更新此值,應該沒有問題。
注意:在Windows上切換32位和64位版本:
- > "C:\\Program Files\\Java\\jre7\\bin\\javaw.exe" -jar "%1" %*
將使用64位版本的JRE - > "C:\\Program Files (x86)\\Java\\jre7\\bin\\javaw.exe" -jar "%1" %*
將使用32位版本的JRE
搜索您的注冊表並檢查以下項目
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\command]
@="\"C:\\Program Files (x86)\\Java\\jre6\\bin\\javaw.exe\" -jar \"%1\""
[HKEY_CLASSES_ROOT\jarfile\shell\open\command]
@="\"C:\\Program Files (x86)\\Java\\jre6\\bin\\javaw.exe\" -jar \"%1\""
[HKEY_CURRENT_USER\Software\Classes\Applications\javaw.exe\shell\open\command]
@="\"C:\\Program Files (x86)\\Java\\jre6\\bin\\javaw.exe\" -jar \"%1\""
我也遇到了這個錯誤。 我使用命令提示符檢查了文件關聯,一切正確。 直到我嘗試使用java -jar MyProgram.jar
從命令行運行.jar,它才真正向我展示了問題的根源。
事實證明.jar是在JDK 7下編譯的,而我只是在運行JRE 6.這是在提示中給我的錯誤,它引導我找到真正的解決方案:
Exception in thread "main" java.lang.UnsupportedClassVersionError: MyProgram/Program : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: MyProgram.Program. Program will ex
it.
如果上述方法無法解決問題,請嘗試從您的電腦中刪除.jar文件類型(您可以谷歌一個名為Unassoc.exe的軟件並刪除文件類型),然后問題得到解決! (至少,這是我的情況!)
我只是遇到了完全相同的問題,修復方法相同。 我不得不完全刪除關聯,而不僅僅是用戶自定義,並重新安裝JRE。
修復前的關聯仍然是:
jarfile="C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -jar "%1" %*
之后(同樣):
jarfile="C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -jar "%1" %*
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.