0

我目前正在尝试使用 Slick 和 Maven 构建一个简单的 java 游戏。

我的设置确实可以正常工作。但是,当我将主类扩展为 Slick“BasicGame”时,我无法再执行 jar,提示此错误消息:

D:\workspace\GameTest\target>java -jar GameTest-1.0-SNAPSHOT.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/newdawn/slick/BasicGame
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$000(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.newdawn.slick.BasicGame
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 12 more
Could not find the main class: gameTest.MyGame. Program will exit.

在我这样做之前,一切都执行得很好。Pom.xml 是从这里复制的。

MyGame 类如下所示: ... 导入 ...

public class MyGame extends BasicGame {

   ...
   empty implementations of BasicGame Methods
   ...

   public static void main(String[] args){
      System.out.println("Hello World");       
   }
}

有谁知道为什么会发生这个错误?

4

1 回答 1

1

有谁知道为什么会发生这个错误?

当您切换到使用可执行 jar 时,您创建了一种情况,您的依赖库 - slick.jar - 不再在您的类路径中。一切开始正常,因为 MyGame 在您的 jar 文件中。但是 MyGame 扩展了不在您的 jar 文件中的 BasicGame。它在 slick.jar 中,您的 java 命令没有引用 slick.jar。

不知何故,您必须将所有依赖项重新放入您的类路径中。有关更多信息,请查看相关问题是否可以使用自定义清单文件创建一个包含项目类和项目依赖项的“uber”jar 作为 jars?

刚刚检查了您的 pom.xml 文件 - 您还必须将 lwjgl 和 vecmath 集成到您的类路径中。

于 2012-10-16T19:47:08.990 回答