2012-06-15 129 views
3

我正在製作一個java程序,它只是一個基本的基於J的GUI程序。當我使用播放按鈕在eclipse中編譯它時,它運行完美,沒有錯誤或錯誤可以看到。爲什麼我的程序不能正確地找到主類?

但是,當我導出並運行它時,它只是返回一個錯誤,說主類無法找到,應該不會有問題,因爲我的啓動配置設置正確,出於某種原因,這隻發生在即時編程在Java 1.7中,當我在1.6它編譯和運行完美。即使我輸出它。

如何導出

This is how i export it

我只是開運行它的JAR文件

在我的MANIFEST.MF文件:

Manifest-Version: 1.0 
Rsrc-Class-Path: ./ 
Class-Path: . 
Rsrc-Main-Class: net.undeadminecraft.wgh.main.Main 
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader 

錯誤消息我得到

the error message

我的包(如果它幫助)

packages

+0

有一些引用,可能是另一個Jar文件,它存在於Eclipse中,但在導出時丟失了。 –

+0

我編輯了OP –

+3

顯示MANIFEST.MF – Ilya

回答

2

在控制檯(java -jar yourjar.jar)上運行您的JAR併發布完整的堆棧跟蹤。也發佈java -versionjavac -J-version的輸出。我的猜測是你的默認Java是Java6,如果你使用Java7構建,你使用的是新的Java7類文件格式,或者你的主類包含對Java6中不存在的類的引用(在一個地方驗證不能推遲)。

編輯:使用Process Explorer或顯示EXE路徑和一個窗口,可以發現過程,並顯示其javaw.exe顯示你到底該錯誤消息的另一個任務管理器。然後嘗試在同一目錄中的java.exe以重現錯誤消息。或者卸載你的所有JRE(JDK可能會停留),但是一個,所以很清楚哪一個正在運行。

+0

當我從控制檯運行它完美的作品,並返回沒有錯誤o.O –

+0

我編輯我的答案相應。 – mihi

+0

我有點困惑,我認爲這將是好,如果我只是讓它從批處理文件運行。感謝您的幫助,雖然:) –

0

你的主要方法簽名是不正確的。請確認它是否如下所示:

public static void main(String args[]){ 
} 

您可能會錯過某些東西。否則,請給我們您的方法聲明。

+0

public static void main(String args []){ \t \t new Main(); \t} 這是在主類 –

1

我建議在MANIFEST.MF設置主類中的「主類」:

Manifest-Version: 1.0 
Rsrc-Class-Path: ./ 
Class-Path: . 
Main-Class: net.undeadminecraft.wgh.main.Main 

可以解決你的問題,作爲主類,你已經在那裏是一個內部類的蝕。

相關問題