mit Maven eine ausführbare Jar bauen

matze86

Bekanntes Mitglied
Ich habe eine Spring boot Anwendung gebaut und möchte über Eclipse mit Maven eine ausführbare JAR-Datei bauen.
Meine pom.xml
XML:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
    <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
    <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
           <groupId>com.mysql</groupId>
           <artifactId>mysql-connector-j</artifactId>
           </dependency>
           <!-- https://mvnrepository.com/artifact/org.modelmapper/modelmapper -->

<dependency>
    <groupId>org.modelmapper</groupId>
    <artifactId>modelmapper</artifactId>
    <version>3.1.0</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <scope>provided</scope>
</dependency>

        
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    
</project>

Mein Vorgehen: auf pom.xml dann > Ausführen als > Maven Build > dann unter Goals habe ich package eingetragen und ausgeführt.

Mein Betriebssystem ist Ubuntu.
Danach habe ich die JAR-Datei ausführbar gemacht und bin in den Ordner gewechselt und mit "java -jar ./mein.jar" ausgeführt.
Aber es kommen Fehler wie z.B.
Code:
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2023-01-10T18:23:30.213+01:00 ERROR 15460 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.context.ApplicationContextException: Failed to start bean 'webServerStartStop'
Was mache ich hier falsch?
 
Da wird doch bestimmt mehr sein. Da dürfte mindestens eine Exception mit Stacktrace sein, die anzeigen dürfte, wieso der webServerStartStop bean nicht gestartet werden konnte. Diese Informationen solltest Du uns nicht vorenthalten.
 
OK, hier der ganze Auszug:
XML:
java -jar  ./demo-0.0.1-SNAPSHOT.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.0.1)

2023-01-10T18:23:24.898+01:00  INFO 15460 --- [           main] de.rest.userdto.UserdtoApplication       : Starting UserdtoApplication v0.0.1-SNAPSHOT using Java 17.0.5 with PID 15460 (/home/matze/rest_Projekt/mit_dto/userdto/target/demo-0.0.1-SNAPSHOT.jar started by root in /home/matze/rest_Projekt/mit_dto/userdto/target)
2023-01-10T18:23:24.901+01:00  INFO 15460 --- [           main] de.rest.userdto.UserdtoApplication       : No active profile set, falling back to 1 default profile: "default"
2023-01-10T18:23:25.834+01:00  INFO 15460 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode
2023-01-10T18:23:25.836+01:00  INFO 15460 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JDBC repositories in DEFAULT mode.
2023-01-10T18:23:25.890+01:00  INFO 15460 --- [           main] .RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface de.rest.userdto.modell.UserRepo; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table.
2023-01-10T18:23:25.891+01:00  INFO 15460 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 49 ms. Found 0 JDBC repository interfaces.
2023-01-10T18:23:25.918+01:00  INFO 15460 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode
2023-01-10T18:23:25.919+01:00  INFO 15460 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2023-01-10T18:23:25.974+01:00  INFO 15460 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 47 ms. Found 1 JPA repository interfaces.
2023-01-10T18:23:26.823+01:00  INFO 15460 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8083 (http)
2023-01-10T18:23:26.842+01:00  INFO 15460 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2023-01-10T18:23:26.843+01:00  INFO 15460 --- [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.4]
2023-01-10T18:23:26.989+01:00  INFO 15460 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2023-01-10T18:23:26.991+01:00  INFO 15460 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1987 ms
2023-01-10T18:23:27.222+01:00  INFO 15460 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2023-01-10T18:23:27.320+01:00  INFO 15460 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 6.1.6.Final
2023-01-10T18:23:27.610+01:00  WARN 15460 --- [           main] org.hibernate.orm.deprecation            : HHH90000021: Encountered deprecated setting [javax.persistence.sharedCache.mode], use [jakarta.persistence.sharedCache.mode] instead
2023-01-10T18:23:27.774+01:00  INFO 15460 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2023-01-10T18:23:28.246+01:00  INFO 15460 --- [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@5491f68b
2023-01-10T18:23:28.249+01:00  INFO 15460 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2023-01-10T18:23:28.325+01:00  INFO 15460 --- [           main] SQL dialect                              : HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
2023-01-10T18:23:29.163+01:00  INFO 15460 --- [           main] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2023-01-10T18:23:29.173+01:00  INFO 15460 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2023-01-10T18:23:29.654+01:00  WARN 15460 --- [           main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2023-01-10T18:23:30.121+01:00  WARN 15460 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Failed to start bean 'webServerStartStop'
2023-01-10T18:23:30.122+01:00  INFO 15460 --- [           main] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2023-01-10T18:23:30.125+01:00  INFO 15460 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2023-01-10T18:23:30.140+01:00  INFO 15460 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
2023-01-10T18:23:30.144+01:00  INFO 15460 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2023-01-10T18:23:30.173+01:00  INFO 15460 --- [           main] .s.b.a.l.ConditionEvaluationReportLogger :

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2023-01-10T18:23:30.213+01:00 ERROR 15460 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.context.ApplicationContextException: Failed to start bean 'webServerStartStop'
    at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181) ~[spring-context-6.0.3.jar!/:6.0.3]
    at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356) ~[spring-context-6.0.3.jar!/:6.0.3]
    at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[na:na]
    at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155) ~[spring-context-6.0.3.jar!/:6.0.3]
    at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123) ~[spring-context-6.0.3.jar!/:6.0.3]
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:932) ~[spring-context-6.0.3.jar!/:6.0.3]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:587) ~[spring-context-6.0.3.jar!/:6.0.3]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.0.1.jar!/:3.0.1]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730) ~[spring-boot-3.0.1.jar!/:3.0.1]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:432) ~[spring-boot-3.0.1.jar!/:3.0.1]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) ~[spring-boot-3.0.1.jar!/:3.0.1]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1302) ~[spring-boot-3.0.1.jar!/:3.0.1]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1291) ~[spring-boot-3.0.1.jar!/:3.0.1]
    at de.rest.userdto.UserdtoApplication.main(UserdtoApplication.java:12) ~[classes!/:0.0.1-SNAPSHOT]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[demo-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:95) ~[demo-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[demo-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) ~[demo-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat server
    at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:229) ~[spring-boot-3.0.1.jar!/:3.0.1]
    at org.springframework.boot.web.servlet.context.WebServerStartStopLifecycle.start(WebServerStartStopLifecycle.java:44) ~[spring-boot-3.0.1.jar!/:3.0.1]
    at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178) ~[spring-context-6.0.3.jar!/:6.0.3]
    ... 21 common frames omitted
Caused by: java.lang.IllegalArgumentException: standardService.connector.startFailed
    at org.apache.catalina.core.StandardService.addConnector(StandardService.java:238) ~[tomcat-embed-core-10.1.4.jar!/:na]
    at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviouslyRemovedConnectors(TomcatWebServer.java:282) ~[spring-boot-3.0.1.jar!/:3.0.1]
    at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:213) ~[spring-boot-3.0.1.jar!/:3.0.1]
    ... 23 common frames omitted
Caused by: org.apache.catalina.LifecycleException: Protocol handler start failed
    at org.apache.catalina.connector.Connector.startInternal(Connector.java:1084) ~[tomcat-embed-core-10.1.4.jar!/:na]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-10.1.4.jar!/:na]
    at org.apache.catalina.core.StandardService.addConnector(StandardService.java:234) ~[tomcat-embed-core-10.1.4.jar!/:na]
    ... 25 common frames omitted
Caused by: java.net.BindException: Die Adresse wird bereits verwendet
    at java.base/sun.nio.ch.Net.bind0(Native Method) ~[na:na]
    at java.base/sun.nio.ch.Net.bind(Net.java:555) ~[na:na]
    at java.base/sun.nio.ch.ServerSocketChannelImpl.netBind(ServerSocketChannelImpl.java:337) ~[na:na]
    at java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:294) ~[na:na]
    at org.apache.tomcat.util.net.NioEndpoint.initServerSocket(NioEndpoint.java:246) ~[tomcat-embed-core-10.1.4.jar!/:na]
    at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:201) ~[tomcat-embed-core-10.1.4.jar!/:na]
    at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1172) ~[tomcat-embed-core-10.1.4.jar!/:na]
    at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1258) ~[tomcat-embed-core-10.1.4.jar!/:na]
    at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:586) ~[tomcat-embed-core-10.1.4.jar!/:na]
    at org.apache.catalina.connector.Connector.startInternal(Connector.java:1081) ~[tomcat-embed-core-10.1.4.jar!/:na]
    ... 27 common frames omitted
 
So Stacktraces werden von hinten nach vorne gelesen, da halt irgendwo eine Exception auftritt, gefangen wird und dann in einer neuen Exception sozusagen mitgegeben wird.

Und damit ist der Fehler direkt hier zu sehen:
Caused by: java.net.BindException: Die Adresse wird bereits verwendet
Die Adresse, die da genutz werden soll, ist bereits in Nutzung. Es läuft also ggf. noch eine Version in der IDE, die Du erst stoppen musst, damit der Port frei ist.
 
Eclipse darf laufen, nur eben wird sich die Spring Boot Applikation den Port (vermutlich 8080) schnappen, wenn Du diese in Eclipse startest. Du kannst diese dann aber auch einfach beenden ohne Eclipse zu beenden. Dazu solltest Du beim Console Fenster mit der Ausgabe der Spring Boot Applikation eine rote, quadratische Schaltfläche haben.
 
Man kann in Eclipse auch mehrere Prozesse starten. Hier kann man dann in der Console View den entsprechenden Prozess auswählen. Erst dann erscheint dort auch ein rotes Rechteck zum Beenden dieses Prozesses. Vielleicht hattest du den nur in der Console View nicht ausgewählt.
 

Zurück
Oben