# Maven & Intellij Modul kann nicht aufgelöst werden



## psp3006 (11. Dez 2020)

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:


ProjektA erstellt
pom.xml angepasst.
module-info.java unter `src/main/java` erstellt
Package exportiert


ProjektB erstellt
pom.xml angepasst
dependency von ProjektA eingefügt

module-info.java unter `src/main/java` erstellt
Modul importiert


ProjektA sie wie folgt aus:



Spoiler



[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`


Spoiler



[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`


Spoiler



[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:



Spoiler



[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`


Spoiler



[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`


Spoiler



[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.


----------



## kneitzel (11. Dez 2020)

Hast Du denn das erste Projekt installiert, also das Goal install mit maven ausgeführt?


----------



## psp3006 (11. Dez 2020)

Ah sorry vergessen zu schreiben.

Also nachdem ich das erste package erstellt habe folgende befehle ausgeführt.

`mvn package`
`mvn install`


----------



## mrBrown (11. Dez 2020)

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.


----------



## psp3006 (12. Dez 2020)

Ä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.


----------



## mrBrown (12. Dez 2020)

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.


----------



## psp3006 (12. Dez 2020)

Hab es mal in ein Archiv gepackt..


----------



## LimDul (12. Dez 2020)

Bei mir baut das direkt mit Maven auf der Kommandozeile.


----------



## mrBrown (12. Dez 2020)

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:

```
<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.


----------



## psp3006 (13. Dez 2020)

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.


----------



## kneitzel (13. Dez 2020)

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).


----------



## mrBrown (13. Dez 2020)

Und die neuste Version nutzen, möglichweise ist das auch einfach ein schon gefixter Fehler


----------



## psp3006 (13. Dez 2020)

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...


----------

