0

I am currently trying to build a simple java Game with Slick and Maven.

My Setup does work basicly. But when I extend my Main Class to be a Slick "BasicGame" I can't execute the jar anymore, promting this error message:

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.

Before I did this everything executed just fine. The Pom.xml is copied from here.

the MyGame class looks like this: ... imports ...

public class MyGame extends BasicGame {

   ...
   empty implementations of BasicGame Methods
   ...

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

Does anyone know why this error occures?

Jack
  • 16,506
  • 19
  • 100
  • 167
Blank Chisui
  • 1,043
  • 10
  • 25

1 Answers1

1

Does anyone know why this error occurs?

When you switched to using an executable jar, you created a situation where your dependent library - slick.jar - is no longer in your class path. Everything starts out OK because MyGame is in your jar file. But MyGame extends BasicGame which is not in your jar file. It is in slick.jar and your java command makes no reference to slick.jar.

Somehow you have to get all your dependencies back into your class path. For more information check out related question Is it possible to create an "uber" jar containing the project classes and the project dependencies as jars with a custom manifest file?

Just checked your pom.xml file - you'll have to integrate lwjgl and vecmath into your class path also.

Community
  • 1
  • 1
Guido Simone
  • 7,912
  • 2
  • 19
  • 21