Maven Abhängigkeiten überprüfen auf Kompatibilität mit einer anderen Java-Version

DefconDev

Bekanntes Mitglied
Hallo zusammen,

ich soll unser Arbeitsprojekt auf eine höhere Java-Version stellen. Wir bauen mit Maven und deployen mit Tomcat.

Ich benutze Intellij als IDE, gibt es dort eine Möglichkeiten zumin. die Dependencies prüfen zu lassen ob die mit Java 11 kompatibel sind? Also ein Tool dass die pom.xml untersucht.

Danke im Voraus.
 

mrBrown

Super-Moderator
Mitarbeiter
Mir ist keine Möglichkeit bekannt, Maven bietet nur die Möglichkeit, dass man eine Minimalversion angibt, aber keine Möglichkeit für eine Maximalversion.

Solange da nicht grober Unfug getrieben wurde, sollte das aber problemlos auf 11 laufen. Einfach mal mit 11 kompilieren und alle Tests durchlaufen lassen.

Probleme machen meist nur Dinge, die den Bytecode manipulieren oder nicht mehr vorhandene Abhängigkeiten nutzen, beides finden man normalerweise recht schnell.
 

DefconDev

Bekanntes Mitglied
Ok, wir haben wohl Probleme mit Tomcat 8 und höher. Bekomme Servlet Exceptions, die laut Stackoverflow darauf hindeuten dass etwas in einer veralteten Version Kompiliert wird. In unserer Pom wird aber nirgendwo explizit angegeben dass irgendein Modul anders kompiliert werden soll als Overall angegeben in der Pom.
 

mrBrown

Super-Moderator
Mitarbeiter
Ob Dinge zu alt sind, kann man natürlich überprüfen.

Mit dem Dependency-Plugin kann man nach Duplikaten suchen, der Grund für solche Fehler können in verschiedenen Versionen eingebundene Dependencies sein. Verhindern kann man doppelte dann mit dem Enforcer-Plugin.
Mit dem Versions-Plugin kann man nach Updates suchen, damit finden man recht schnell sehr veraltete Versionen.



Kannst du mal eine der Exceptions zeigen? Wenn ich raten müsste, würde ich auf irgendeine mit ByteCode arbeitenden Lib tippen, cglib oder asm?
 
Zuletzt bearbeitet:

DefconDev

Bekanntes Mitglied
Etwas abseits der Servlet Geschichte: Ich habe gerade versucht das Projekt mit Java 9(OpenJDK) zu bauen mit Maven, da werden mir schon direkt Exceptions geworfen. Gehe ich recht in der Annahme dass
<spring.version>4.2.5.RELEASE</spring.version> zu niedrig ist für Java 9?

EDIT: Meine ganzen automatisch erzeugten Bean Klassen werden nicht mehr erkannt. symbol: class meineBean_
Error: cannot find symbol
 
Zuletzt bearbeitet:

mrBrown

Super-Moderator
Mitarbeiter
EDIT: Meine ganzen automatisch erzeugten Bean Klassen werden nicht mehr erkannt. symbol: class meineBean_
Error: cannot find symbol
Ist das der einzige Fehler? Dann würde ich mal prüfen, wie die generiert werden.

Etwas abseits der Servlet Geschichte: Ich habe gerade versucht das Projekt mit Java 9(OpenJDK) zu bauen mit Maven, da werden mir schon direkt Exceptions geworfen. Gehe ich recht in der Annahme dass
<spring.version>4.2.5.RELEASE</spring.version> zu niedrig ist für Java 9?
Der Build sollte durchlaufen, erst zur Laufzeit kann das Probleme geben, weil zT Libs nur mit bestimmten Java-Versionen laufen (zB die oben genannten asm und cglib), ich weiß nicht, ob es da ein Update für Spring 4 gab.


Allerdings sind kompilieren mit 9, für 9 und ausführen auf 9 drei unterschiedliche Dinge (9 ist bzw "deprecated").
Auf 9 sollte es direkt laufen, uU muss man Jaxb mitliefern.
Mit 9 für 8 kompilieren sollte auch klappen.
Für 9 kompilieren braucht mindestens Anpassung einiger Libs, die nur mit bestimmten Byte-Code-Versionen laufen.
 

mrBrown

Super-Moderator
Mitarbeiter
JPA war noch nie im JDK enthalten.

JAXB ist rausgeflogen, sollte beim Fehlen aber eine verständliche Exception liefern, kann man über Maven als Dependency einbinden.
 

DefconDev

Bekanntes Mitglied
Danke dir, das eliminiert schon mal die Fehler die ich bisher hatte. Dachte bis eben, JPA ist eine Schnittstelle die automatisch mit JDK daher kommt und dann von einem Vendor wie Hibernate angesprochen wird. Wieder was dazu gelernt.

Jetzt bekomme ich aber eine andere Exception :)

Code:
Failed to execute goal org.codehaus.mojo:aspectj-maven-plugin:1.8:compile
Execution default of goal org.codehaus.mojo:aspectj-maven-plugin:1.8:compile failed: Plugin org.codehaus.mojo:aspect

Mal schauen was ich dazu finde.
 

mrBrown

Super-Moderator
Mitarbeiter
aspectj-maven-plugin muss in jedem Fall aktualisiert werden, dass arbeitet mit festen Byte-Code-Versionen.
Die aktuelle Version davon hat Unterstützung für aktuelle Java-Versionen.
 

DefconDev

Bekanntes Mitglied
aspectj-maven-plugin muss in jedem Fall aktualisiert werden, dass arbeitet mit festen Byte-Code-Versionen.
Die aktuelle Version davon hat Unterstützung für aktuelle Java-Versionen.
Habe ich auch gerade festgestellt. In meiner POM ist einmal:

CSS:
<!-- ASPECTJ VERSION -->
        <aspectj.version>1.8.9</aspectj.version>
        <proc>none</proc>

//Die habe ich auf 1.9.2 erhöht
Code:
<plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>aspectj-maven-plugin</artifactId>
                <version>1.8</version>
                <configuration>
                    <showWeaveInfo>true</showWeaveInfo>
                    <verbose>false</verbose>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <complianceLevel>${java.version}</complianceLevel>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <proc>none</proc>
                    <aspectLibraries>
                        <aspectLibrary>
                            <groupId>org.springframework</groupId>
                            <artifactId>spring-aspects</artifactId>
                        </aspectLibrary>
                    </aspectLibraries>
                </configuration>
                <executions>
                    <execution>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjrt</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjtools</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                </dependencies>
            </plugin>

// Die habe ich auf 1.11 geändert
https://mvnrepository.com/artifact/org.codehaus.mojo/aspectj-maven-plugin

Leider selbe Exception...

EDIT:
Code:
Could not find artifact com.sun:tools:jar:9.0.4 at specified path C:\Program Files\openjdk\jdk-9.0.4/../lib/tools.jar -> [Help 1]
 
Zuletzt bearbeitet:

DefconDev

Bekanntes Mitglied
Das Problem konnte ich jetzt lösen in dem ich mit Hilfe dieses Threads das direkt aus einem Githubproject lade.
Code:
<groupId>com.github.m50d</groupId>
            <artifactId>aspectj-maven-plugin</artifactId>
            <version>1.11.1</version>
https://stackoverflow.com/questions...to-build-with-java-9-due-to-missing-tools-jar

EDIT: musste jetzt noch das hinzufügen und nun lässt sich endlich das Ganze in 9 zumin. bauen.
Code:
<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.1</version>
</dependency>
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Programm mit Maven erstellen und starten samt Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 27
P Maven Projekt Abhängigkeiten auf bekante Schwachstellen prüfen Tools - Maven, Gradle, Ant & mehr 4
dtr84 Apache Ivy - Plattform-spezifische Abhängigkeiten in der "ivy.xml" parametrisieren Tools - Maven, Gradle, Ant & mehr 1
E Maven: Wie Abhängigkeiten analysieren? Tools - Maven, Gradle, Ant & mehr 0
S Maven Maven Site bleibt bei Abhängigkeiten hängen. Tools - Maven, Gradle, Ant & mehr 2
E Ant Problem mit Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 2
HaukeG Maven Java Web-Application in Eclipse - Abhängigkeiten zwischen den Projekten Tools - Maven, Gradle, Ant & mehr 10
X Maven Auflösung von transitiven Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 5
V Projekt Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 3
X Maven Abhängigkeiten in die jar einbinden Tools - Maven, Gradle, Ant & mehr 10
musiKk Maven Deploy von Bundles mit Abhängigkeiten an nicht-Bundles Tools - Maven, Gradle, Ant & mehr 5
D [Maven] mehrere Abhängigkeiten benutzen gleichbenannte aber verschiedene Resource Tools - Maven, Gradle, Ant & mehr 3
S Maven Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 3
B Maven Abhängigkeit zu Pom vs direkten Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 3
B Programmcode überprüfen Tools - Maven, Gradle, Ant & mehr 3

Ähnliche Java Themen

Neue Themen


Oben