尝试运行从Eclipse导出的jar文件时出错

时间:2012-03-04 21:40:45

标签: eclipse

当我导出我的项目时,它可以工作,但是当我打开它时,它说:“找不到主类:Game.Frame”并且有一个名为Game的文件夹和一个类在那里名为FrameFrame.class的主要类别。

1 个答案:

答案 0 :(得分:0)

听起来好像你的“Game”类在一个软件包中,而你没有正确指向软件包。

实施例

  

http://www.jarticles.com/package/package_eng.html

     

如果您尝试使用java HelloWorld运行此HelloWorld,您将获得   以下错误:

C:\world>java HelloWorld 
Exception in thread "main"
java.lang.NoClassDefFoundError: HelloWorld (wrong name: world/HelloWorld)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:442)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:101)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:248)
        at java.net.URLClassLoader.access$1(URLClassLoader.java:216)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:191)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:290)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
  

原因是现在HelloWorld类属于该包   世界。如果我们想要运行它,我们必须告诉JVM它的内容   完全限定的类名(world.HelloWorld)而不是它的简单   班级名称(HelloWorld)。

C:\world>java world.HelloWorld
C:\world>Hello World
  

注意:完全限定的类名是java类的名称   包括其包名称

另请注意,.jar文件具有类似的规则 - 如果您有一个包,则需要限定包范围。是的,你应该总是使用“包”(这是.Net称之为“命名空间”的道德等同物。)