Exporting Spring Boot application as JAR file in eclipse

62,839

Solution 1

Most likely, you're using the built-in Eclipse exporter to generate your jar, which only includes the target files actually produced in that project. In order to have a "fat" (standalone executable) jar, you need to use the Spring Boot Maven or Gradle plugin to "repackage" the jar.

First, make sure that you have the repackage goal included in your build setup, then use the Maven package target. The simplest way to do this is to run mvn package from the command line (you may need to install the Maven CLI package for your OS); you can also right-click the POM in Eclipse and "Run As" to execute specific Maven operations from within Eclipse.

Solution 2

It is a single line command, on window 7/10 machine, with command prompt to your project folder (Inside your project workspace). I do not do with Eclipse IDE POM maven goals, but you can do with maven goal there also. ON window machine I prefer cmd.exe for exporting and running.

mvnw clean package

on unix kernel based

./mvnw clean package

You have to go inside workspace and than to the project root folder. You will see a maven wrapper mvnw, with that you don't need to have maven installed and .mvn folder at the same level provides necessary jar for that. For a project

D:\workspace\Zuteller Workspace\zusteller>mvnw clean package

it will create zusteller-0.0.1-SNAPSHOT.jar in the target folder at the same level.

D:\workspace\Zuteller Workspace\zusteller>java -jar target\zusteller-0.0.1-SNAPSHOT.jar

You can run self-contained application(embedded Tomcat) and access at localhost:8080/your project

Share:
62,839
Viggo Lundén
Author by

Viggo Lundén

C# developer currently working at Atlas Copco, Industrial Technique in Stockholm, Sweden.

Updated on March 03, 2020

Comments

  • Viggo Lundén
    Viggo Lundén about 4 years

    I'm using the Spring STS in Eclipse to create a simple web-based spring boot project. I can run it fine in Eclipse, but when I try to export it as a JAR file I get:

    rg.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
    

    My public static void mainis located in Application.java, with the @SpringBootApplication annotation.

    I've double checked all the Maven dependencies a hundred times.

    What am I doing wrong?

  • Viggo Lundén
    Viggo Lundén almost 8 years
    Fantastic!! The very last part of your answer did the trick for me, I didn't realise I had to "run" the pom.xml with Maven. I can't thank you enough.
  • chrylis -cautiouslyoptimistic-
    chrylis -cautiouslyoptimistic- almost 8 years
    @ViggoLundén Happy to help. I do recommend getting familiar with running Maven from the CLI (just like Git), because it's the "official" approach used by CI tools and the like (it provides the so-called "one-step build"), and M2Eclipse has a few subtle bugs, mostly relating to the classpath, that can bite you if you don't do your pre-push tests from the CLI.