# Maven Warnings/Fehlermeldungen



## Turing0001 (11. Apr 2021)

Hallo ihr Java-Experten,

mittlerweile komme ich recht gut mit den Maven Basics klar, aber es gibt noch zwei Ungereimtheiten, die mich stören bzw. die ich mir nicht so recht erklären kann.
Wenn ich die jar für meinMaven-Projekt erstelle (clean verify oder clean install) bekomme ich zunächst eine Reihen von Fehlern/Warnings(?), etwa:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/User/.p2/pool/plugins/org.eclipse.m2e.maven.runtime.slf4j.simple_1.16.0.20200610-1735/jars/slf4j-simple-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [file:/C:/Users/User/eclipse/jee-2020-12/eclipse/configuration/org.eclipse.osgi/1705/0/.cp/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [file:/C:/Users/User/eclipse/jee-2020-12/eclipse/configuration/org.eclipse.osgi/5/0/.cp/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/User/.p2/pool/plugins/org.eclipse.m2e.maven.runtime.slf4j.simple_1.16.0.20200610-1735/jars/slf4j-simple-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [file:/C:/Users/User/eclipse/jee-2020-12/eclipse/configuration/org.eclipse.osgi/1705/0/.cp/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [file:/C:/Users/User/eclipse/jee-2020-12/eclipse/configuration/org.eclipse.osgi/5/0/.cp/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]

Diese beeinflussen nicht das Endergebnis, die jar wird korrekt erstellt, aber ich frage mich ob ich da etwas tue, das nicht ganz sauber ist. 
Zum zweiten ist in meiner Ordnerstruktur (ich benutze Maven in Eclipse) ein weiterer Ordner vorhanden namens src welcher die Unterordner main und test hat, welche aber scheinabr nicht verwendet werden. Wozu dienen diese?
Vielen Dank vorab schon mal wieder für eure Mühe.


----------



## 123neu (11. Apr 2021)

zeig ma pom.xml

Und gleich zu deinem Problem, du musst 'n Logger einbinden


----------



## Turing0001 (11. Apr 2021)

Hallo 123neu,

danke für die schnelle Hilfe. Hier eine mögliche pom:


```
<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>
  <groupId>com.matz</groupId>
  <artifactId>DBMaven</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>MavenDB</name>
  <description>Datenbank mit Maven</description>
  <properties>
    <maven.compiler.source>15</maven.compiler.source>
    <maven.compiler.target>15</maven.compiler.target>
</properties>
<dependencies>
   <!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc -->
<dependency>
    <groupId>org.xerial</groupId>
    <artifactId>sqlite-jdbc</artifactId>
    <version>3.30.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
</dependency>

  </dependencies>
   <build>
    
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <release>15</release>
        </configuration>
      </plugin>
      <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.matz.mydatabase</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
              <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.2.4</version>
        <configuration>
          <!-- put your configurations here -->
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>   
    </plugins>
  </build>
</project>
```

Das mit dem Logger habe ich noch nicht gehört. Was ist das? Bitte um Erleuchtung!


----------



## kneitzel (11. Apr 2021)

Also unter https://www.baeldung.com/slf4j-classpath-multiple-bindings findest Du eine recht gute Erläuterung bezüglich des Problems und wie man da weitere Details zu finden / das lösen kann.


----------



## thecain (11. Apr 2021)

Turing0001 hat gesagt.:


> eine mögliche pom


Also die, die du verwendest oder was ist das jetzt?


----------



## Turing0001 (11. Apr 2021)

thecain hat gesagt.:


> Also die, die du verwendest oder was ist das jetzt?


Ja genau, die verwende ich.


----------



## kneitzel (11. Apr 2021)

Bei der pom.xml, die Du geteilt hast, solltest Du keine solche Warnung bekommen. Da hast Du kein slf4j mit drin:

```
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ DBMaven ---
[INFO] com.matz:DBMaven:jar:0.0.1-SNAPSHOT
[INFO] +- org.xerial:sqlite-jdbc:jar:3.30.1:compile
[INFO] \- junit:junit:jar:4.13.2:test
[INFO]    \- org.hamcrest:hamcrest-core:jar:1.3:test
```

Wenn du es generell bekommen solltest, dann ist die Warnung evtl. direkt von Deinem Maven? Maven kommt mit slf4j (3.6.3 hat slf4j-api-1.7.29 mit drin).

Da wäre dann interessant zu wissen, was Du genau gemacht hast:
- Was für ein JDK hast Du im Einsatz? Hast Du da irgendwas verändert (jar Files in dem lib Ordner des JDK gelegt oder so?)
- Wie hast Du Maven installiert? Da in das entpackte Verzeichnis noch etwas getan?


----------



## Turing0001 (11. Apr 2021)

kneitzel hat gesagt.:


> Also unter https://www.baeldung.com/slf4j-classpath-multiple-bindings findest Du eine recht gute Erläuterung bezüglich des Problems und wie man da weitere Details zu finden / das lösen kann.


Hallo kneitzel,

vielen Dank für die Info, ich schaue es mir gleich mal an.


----------



## Turing0001 (11. Apr 2021)

kneitzel hat gesagt.:


> Bei der pom.xml, die Du geteilt hast, solltest Du keine solche Warnung bekommen. Da hast Du kein slf4j mit drin:
> 
> ```
> [INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ DBMaven ---
> ...


Hallo kneitzel,

nein, verändert habe ich nichts, ich verwende Maven so wie von Eclipse vorinstalliert. Mein JDK ist Version 15


----------



## kneitzel (11. Apr 2021)

Bezüglich dem, was ich da geschrieben habe: Da hatte ich einen kleinen Denkfehler: Die Analyse mit den Dependencies, die ich gebracht habe, bringt nur etwas, wenn es zur Laufzeit des Projektes auftritt. Nicht beim eigentlichen Übersetzungslauf!

Zur Erläuterung: Es gibt diverse Logging Frameworks für Java. Bei großen Projekten kommt man dann zu der Problematik, dass unterschiedliche Abhängigkeiten unterschiedliche Frameworks verwenden können. Und das will man am Ende natürlich vereinheitlicht haben.

Ein Ansatz hier ist, dass Du bei slf4j Deine Log-Meldungen schreibst, aber wie das dann am Ende wirklich raus kommt, ist dynamisch und wird zur Laufzeit festgelegt. Da gibt es dann diverse Bindings. 
Bei Dir hat er mehrere dieser Bindings gefunden:
- slf4j-simple-1.7.5.jar
- 2x eine StaticLoggerBinder.class

Das ist also ein Problem von Eclipse - und im ersten Moment wäre meine Meinung da: Benutz eine vernünftige IDE zum entwickeln und nutz eclipse nur als grafisches Adventure, wenn Du spielen willst ... (Ja, das ist wenig hilfreich  )


----------



## Turing0001 (11. Apr 2021)

kneitzel hat gesagt.:


> Bezüglich dem, was ich da geschrieben habe: Da hatte ich einen kleinen Denkfehler: Die Analyse mit den Dependencies, die ich gebracht habe, bringt nur etwas, wenn es zur Laufzeit des Projektes auftritt. Nicht beim eigentlichen Übersetzungslauf!
> 
> Zur Erläuterung: Es gibt diverse Logging Frameworks für Java. Bei großen Projekten kommt man dann zu der Problematik, dass unterschiedliche Abhängigkeiten unterschiedliche Frameworks verwenden können. Und das will man am Ende natürlich vereinheitlicht haben.
> 
> ...


Ok. Das Problem ist nur: Ich liebe Eclipse 😍.  Obwohl ich gerade auch mit VSC experimentiere, aber hauptsächlic für HTML/CSS/JavaScript.


----------



## kneitzel (11. Apr 2021)

Turing0001 hat gesagt.:


> Das Problem ist nur: Ich liebe Eclipse 😍.


Dann schau mal, ob Du diese Quest lösen kannst ... evtl. hilft da der folgende SO Beitrag etwas:








						multiple slf4j bindings in Eclipse RCP Plugin
					

I have a simple Eclipse Plugin which gives me following error on activation:  SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [bundleresource://103.fwk8918249:1/org/slf4...




					stackoverflow.com
				




Das gibt zumindest ein paar Hinweise bezüglich möglicher Quellen.

Evtl. ist es einen Versuch wert, die aktuelle Version (2021-03) frisch zu installieren:
a) Also die aktuelle Eclipse Version frisch irgendwo zu installieren (Im User-Verzeichnis gibt es doch auch ein .p2 Verzeichnis oder so - das ggf. vorher auch umbenennen.. Ich kenne da aber Eclipse einfach nicht gut genug um zu wissen wo ggf. noch mehr Dinge gespeichert sind, die einem dazwischen funken können ...) ohne zusätzliche Addons/Plugins
b) Frischer Workspace und dann nur das maven Projekt kopieren (also ohne ggf. Eclipse-Spezifische Dateien wie .project .classpath und so ... also nur pom.xml und src Verzeichnis sollten ausreichen ... oder was Du halt projektspezifisch noch angelegt haben solltest ...)

Tritt das Problem dann immer noch auf? 

Ich wundere mich halt, dass Eclipse bei dir scheinbar etwas auch doppelt hat:

```
SLF4J: Found binding in [file:/C:/Users/User/eclipse/jee-2020-12/eclipse/configuration/org.eclipse.osgi/1705/0/.cp/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [file:/C:/Users/User/eclipse/jee-2020-12/eclipse/configuration/org.eclipse.osgi/5/0/.cp/org/slf4j/impl/StaticLoggerBinder.class]
```

Das scheint ja - bis auf das eine Verzeichnis 1705 bzw 5 komplett gleich zu sein - also ggf. unterschiedliche Versionen einer Library ... Das scheint etwas auf eine leicht verhunzte Konfiguration hin zu deuten ... Wurde da evtl. irgendwas von einer alten Version übernommen oder so?

==> Aber an der Stelle bin ich am Ende meiner Lateinkenntnisse angelangt - da dürfen dann die erfahrenen Eclipse Benutzer ran, die da dann die Internas besser kennen.


----------



## Turing0001 (11. Apr 2021)

kneitzel hat gesagt.:


> Dann schau mal, ob Du diese Quest lösen kannst ... evtl. hilft da der folgende SO Beitrag etwas:
> 
> 
> 
> ...


Hallo Kneitzel,

ich schaue mal, das mit dem neuen Workspace werde ich heute noch probieren, vielleicht löst das ja das Problem. Danke für den Hinweis.


----------

