簡體   English   中英

雙擊.jar文件時“無法找到主類”

[英]“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM