9
votes

I've got a project in which I'm using Java+Scala+Slick2D.

The project itself runs well when launched from within eclipse. But when I try to make a jar file, it just refuses to work. Here's the error I keep getting when trying to export it as a Runnable jar:

enter image description here

And if I try to export into just a Jar file, it's unable to find the Main Class:

enter image description here

There is, of course, a main class in game.TicTacGame. But it refuses to acknowledge it. I tried creating an executable with a simple Hello World project and it worked fine. It even detects the main class. Why is Eclipse not detecting the main class in this case?

PS: I've also tried extracting the .jar file created, editing the manifest.mf file to add the Main-Class: game.TicTacGame, enter two new lines and recreate the jar. Then it gives me a corrupted jar file error.

I'm at my wits end and would appreciate any help in this regard. I'm using Windows 7 x64 with Eclipse Juno, Java 1.7 and Scala 2.10

Edit: The Main class is in Java

7
You might want to add the information whether your main class is a Java or Scala class. I'm not familiar with Eclipse Jar Export, but if I remember correctly, there was some issue that the main class must be a Java class.bluenote10
It's a Java main class. Added that in.Plasty Grove

7 Answers

12
votes

Okay, I got it to work. Apparently, all I needed to do was restart eclipse. And then magically, it started detecting the Main class:

enter image description here

But the jar started giving me noClassDefFound errors for the Slick2d, LWJGL and other libraries. That's where JarSplice came to my rescue. I exported the project as before, with all the libraries and resources.

Then, I fired up JarSplice and added everything as follows:

  1. Go to "Add Jars" and add the project.jar just created through eclipse, add lwjgl.jar, slick.jar and scala-library.jar. lwjgl and slick should be in your project lib folder where you would have imported them. scala-library should be available wherever it says it is. Make sure you add that as wellenter image description here
  2. Next, when I tried to "Add Natives" it kept giving me "Duplicate library" error. So I removed them all and kept it empty.
  3. Next in "Main Class", I entered the path to the main class i.e. game.TicTacGame
  4. Finally, "Create Fat Jar". And it works perfectly :)
8
votes

I just encountered the same problem, and here is how I solved it:

  1. Open "Run As" --> "Run Configuration" on the project you want to export

  2. Click "Search" for Eclipse to refresh the list of main class

  3. Then export Runnable JAR file again, and everything goes smoothly.

0
votes

I recently figured a better way to do this using 'Runnable jar export' which might help you. In order for your main method to be listed in that list, you need to add the main method to the Run Configuration list.

This way it's simpler to create a runnable jar especially if you want to do it repeatedly.

0
votes

Well, got the same Problem and solved it by selecting my GUI to export and not the whole Project.

0
votes

The most easiest method is run the java file once and automatically the file appears in the list.Even i was facing the error but it was solved by using this simple method.

0
votes

I had this problem with Eclipse version 2019-03 (4.11.0) and compiler JaveSE-11. Choosing the right launch configuration and exporting runnable jar failed over and over again with an error

Could not find main method from given launch configuration

I've tried to restart Eclipse and do a clean build, but it didn't help.

In the end, I found a workaround to go into the generated jar file (I've used 7zip) and change META-INF/MANIFEST.MF file. The file should have something like this inside:

Manifest-Version: 1.0
Class-Path: .
Main-Class: <package name>.<class name>

Hope it helps someone.

0
votes

I faced the same issue and in my case I found that "launch configuration" was incorrect in Runnable Jar file specification dialog. Somehow, eclipse was automatically taking it. The "Launch configuration" should be java file which has main method. Basically, it is filename-package. The moment I changed my "launch configuration", I was able to create Jar file without any error.