How do I create a runnable JAR in IntelliJ as I would in Eclipse

Nanor :

My process for creating a runnable JAR from a project with many libraries with Eclipse has been.

Export > Runnable JAR > Select launch configuration > Package required libraries into generated JAR > Finish

This creates a single JAR in my export destination which I FTP to my server and run fine.

I recently switched to IntelliJ for various reasons and it has been an improvement in all cases except for building my JARs which forces me to go back to eclipse temporarily.

With IntelliJ I:

Open Project Structure > Artifacts and create a new JAR from modules with dependencies. I then have my output layout with the name of the JAR, a META-INF inside it and all my libaries with the format Extracted <lib.jar/> (sorry I can't upload screenshots on this VPN.)

I build my artifact (which is about 15MB bigger) and FTP it to my server, try to run it and I get the error:

Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes

How do I mimic how I do it in Eclipse?

EDIT

The two JARs that are created differ considerably:

The valid jar that Eclipse creates looks like this: Good jar

Whereas the invalid .JAR looks like this: Bad jar

user2241537 :

You're facing two issues one seems major and one is minor:

  • Major: signature exception
  • Minor: size of the jar is 15 MB greater than the jar produced by eclipse.

The solution of both of the issues lies in the way you are building the artifact. First of all, remove all extracted *.jar then add all the jar's from the available elements pan as shown in the figure.

Dependencies screenshot

It is obvious that adding packaged(compressed) jars only, will decrease the size. But it also solves the signing issue. For more explanation, please have a look at this article. I'll only quote one line.

It's probably best to keep the official jar as is and just add it as a dependency in the manifest file......

It seems that some of the dependencies are signed and repackaging messes up the META-INF of your project.

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=446263&siteId=1