为什么我的程序不能正确地找到主类?

问题描述:

我正在制作一个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

在控制台(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

我有点困惑,我认为这将是好,如果我只是让它从批处理文件运行。感谢您的帮助,虽然:) –

你的主要方法签名是不正确的。请确认它是否如下所示:

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

您可能会错过某些东西。否则,请给我们您的方法声明。

+0

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

我建议在MANIFEST.MF设置主类中的“主类”:

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

可以解决你的问题,作为主类,你已经在那里是一个内部类的蚀。