2012-03-04 120 views
0

当我导出我的项目时,它可以工作,但是当我打开它时,它会显示:“找不到主要类:Game.Frame”,并且有一个文件夹Game和在那里名为FrameFrame.class是一流的班。尝试运行从Eclipse导出的jar文件时出错

+0

你怎么“打开”它?你的意思是从一个罐子里跑?请参阅http://docs.oracle.com/javase/tutorial/deployment/jar/run.html – 2012-03-04 21:44:43

回答

0

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

例:

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

If you try to run this HelloWorld using java HelloWorld, you will get the following error:

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) 

The reason is right now the HelloWorld class belongs to the package world. If we want to run it, we have to tell JVM about its fully-qualified class name (world.HelloWorld) instead of its plain class name (HelloWorld).

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

Note: fully-qualified class name is the name of the java class that includes its package name

注意,那就是,.jar文件也有类似的规则 - 如果你有一个包,你需要限定包范围。是的,你应该总是使用“包”(这是道德相当于.Net称为“命名空间”)。