Maven & Intellij Modul kann nicht aufgelöst werden

psp3006

Mitglied
Abend,

ich versuche nun seit einigen Stunden ein einfaches (lokales) Module (ProjektA) in ein ein ProjektB einzubinden. Leider Erfolglos ...
Intellij sagt mir immer er kann dieses Modul nicht audlösen!?

Ich bin bis jetzt wie folgt vorgegangen:

  1. ProjektA erstellt
    1. pom.xml angepasst.
    2. module-info.java unter src/main/java erstellt
      1. Package exportiert
  2. ProjektB erstellt
    1. pom.xml angepasst
      1. dependency von ProjektA eingefügt
    2. module-info.java unter src/main/java erstellt
      1. Modul importiert
ProjektA sie wie folgt aus:

[CODE lang="xml" title="Pom.xml"]
<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 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.calc</groupId>
<artifactId>operator</artifactId>
<packaging>jar</packaging>
<version>1.0.0-SNAPSHOT</version>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<!-- Plugin zum Compilieren -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
[/CODE]

Klasse Math.java im Package src.main.java.com.example.calc.operator
[CODE lang="java" title="Math.java"]package com.example.calc.operator;

public class Math {

public static int addition(int num1, int num2) {
return num1 + num2;
}
public static int subraction(int num1, int num2) {
return num1 - num2;
}
public static int multiplication(int num1, int num2) {
return num1 * num2;
}
public static int division(int num1, int num2) {
return num1 / num2;
}
}
[/CODE]

module-info.java im Package src.main.java
[CODE lang="java" title="module-info.java"]module com.example.calc.operator {
exports com.example.calc.operator;
}[/CODE]

Anschliesend folgende Befehle ausgeführt

mvn package
mvn install
------------------------
ProjektB sie wie folgt aus:

[CODE lang="xml" title="Pom.xml"]
<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 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.calc</groupId>
<artifactId>main</artifactId>
<packaging>jar</packaging>
<version>1.0.0-SNAPSHOT</version>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.example.calc</groupId>
<artifactId>operator</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>jar</type>
</dependency>
</dependencies>

<build>
<plugins>
<!-- Plugin zum Compilieren -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

[/CODE]

Klasse App.java im PackageB src.main.java.com.example.calc.main
[CODE lang="java" title="Math.java"]
package com.example.calc.main;

import com.example.calc.operator;

public class App {

public static void main(String[] args) {
System.out.println("Hello World");
}
}

[/CODE]

module-info.java im PackageB src.main.java
[CODE lang="java" title="module-info.java"]
module com.example.calc.main {
requires com.example.calc.operator;
}
}[/CODE]

Und auch hier folgende Befehle ausgeführt

mvn package
mvn install

Kann mir wer erklären warum das nicht Funktioniert bzw. PackageB in der App.java die Meldung Cannot resolve symbol 'operator' und in der module-info.java das modul nicht gefunden werden kann.


Vielen dank im Voraus.
 
Zuletzt bearbeitet:
Was passiert denn, wenn du Projekt B direkt mit Maven baust?

Der Import in Projekt B ist zumindest falsch, packages lassen sich so nicht importieren, dort muss eine konkrete Klasse importiert werden (oder eben ein Wildcard-Import).

und src/main/java ist kein Package, sondern einfach nur ein Ordner, der für Java selbst keine Bedeutung hat.
 
Ähm ja, beim Import muss natürlich, wie du schon sagst, die konkrete Klasse oder ein Wildcard angeben werden.
(Gestern Abend vergessen... war schon leicht müde)

Aber dies ändert leider nichts daran das ich die oben erwähnte Fehlermeldung bekomme.
 
Was passiert denn, wenn du IntelliJ ignorierst und direkt mit Maven baust?

Ansonsten zip die beiden Projekte mal, oben kann ich grad keinen Fehler erkennen, und wenn man das Ganze Projekt hat, kann man mal selber nachgucken.
 
Bei mir bauts auch, mit Maven und auch in IntelliJ.


BTW: die Java-Versionen sind etwas umständlich angegeben, in der einen gibst du ja sogar drei verschiedene Versionen an.
Diese beiden properties anzugeben reicht:
XML:
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>

Konfiguration des compiler-Plugins ist dann nicht mehr nötig, außer man möchte irgendwas anderes einstellen.
 
Mhh komisch, jetzt habe ich einmal über die Windows eigene Konsole Maven ausgeführt bzw. das Projekt gebaut und jetzt klappt es.
Jetzt kann ich es auch in Intellij bauen. Aber es besteht weiterhin das Problem das Intellij mir im Codefenster sagt das di Abhängigkeiten nicht aufgelöst werden konnten. Also werden diese weiterhin Rot markiert angezeigt.
 
Evtl. ist IntelliJ irgendwie durcheinander gekommen. Mal im Maven Toolfenster Reload all Maven Projects sagen (Icon mit Kreis aus zwei Pfeilen).

Zur not einfach mal das IntelliJ Projekt löschen und neu erstellen (also Projekt schließen, .idea Ordner und *.iml Dateien löschen und dann Projekt neu öffnen / importieren).
 
Danke euch für die Tipps, manuell bauen über die Windows Konsole geht ja nun. Daher würde ich erstmal sagen Problem gelöst.
Das Intellij-Problem besteht zwar immer noch, auch nach löschen des idea Ordners bzw *.iml Datei. Neuste Version wird auch verwendet.
Wird definitiv ein Intellij-Problem sein, da ich jetzt mal testhalber ein Projekt, welches von meiner Uni zu Verfügung steht, geöffnet habe und dort werden alle Abhängigkeiten aufgelöst...
 

Zurück
Oben