当我导出我的项目时,它可以工作,但是当我打开它时,它说:“找不到主类:Game.Frame”并且有一个名为Game
的文件夹和一个类在那里名为Frame
和Frame.class
的主要类别。
答案 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称之为“命名空间”的道德等同物。)