Автоматические модули Java 9 не найдены

Я пытаюсь определить модуль Java 9. Я определил что-то вроде:

module my.module.name {

}

тогда многие из моих файлов начали давать мне ошибки, что они не могут найти некоторые пакеты. Затем я использовал функцию автоматической справки IntelliJ и добавил ее в свой модуль-info.java несколько операторов" required". Так что получилось что-то вроде:

module my.module.name {
    requires spring.web;
    requires sshd.core;
    requires com.fasterxml.jackson.core;
    ....
}

теперь IntelliJ показывает весь мой код без ошибок. Но когда я нажимаю "компилировать" в окне "проекты Maven" (я использую Maven 3.5.3 и Oracle JDK 10 для компиляции), он говорит мне следующее:

src/main/java/module-info.java:[2,20] module not found: spring.web
src/main/java/module-info.java:[11,18] module not found: sshd.core
src/main/java/module-info.java:[13,35] module not found: com.fasterxml.jackson.core
...
same for the other modules I "require".

насколько я понял, сторонние библиотеки, которые не определены как модули, генерируют" автоматические " модули. Поэтому я нашел одну из банок, которые мне нужны:

C:Users<my username>.m2repositoryorgspringframeworkspring-web.0.5.RELEASEspring-web-5.0.5.RELEASE.jar

и хотел посмотреть, как называется" автоматический " модуль со следующей командой:

jar.exe" --file=spring-web-5.0.5.RELEASE.jar --describe-module

No module descriptor found. Derived automatic module.

spring.web@5.0.5.RELEASE automatic
...

Итак, согласно моему исследованию, название модуля, который я "требую", правильно! Что я упускаю? Почему я get

module not found: spring.web

и то же самое для других модулей? Я что, заблудился?

редактировать: как и просили, вот мой пом.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 

http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>mygroupid</groupId>
<artifactId>myartifactid</artifactId>
<version>1.0.1-RELEASE</version>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.9</java.version>
</properties>

<dependencies>
    <!-- https://mvnrepository.com/artifact/org.apache.sshd/apache-sshd -->
    <dependency>
        <groupId>org.apache.sshd</groupId>
        <artifactId>apache-sshd</artifactId>
        <version>1.7.0</version>
        <type>pom</type>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-jdk14</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/net.java.dev.jna/jna -->
    <dependency>
        <groupId>net.java.dev.jna</groupId>
        <artifactId>jna</artifactId>
        <version>4.5.1</version>
    </dependency>
    <dependency>
        <groupId>net.java.dev.jna</groupId>
        <artifactId>jna-platform</artifactId>
        <version>4.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>5.0.4.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.0.4.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-autoconfigure</artifactId>
        <version>2.0.0.RELEASE</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
                <descriptors>
                    <descriptor>assembly.xml</descriptor>
                </descriptors>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <source>1.9</source>
                <target>1.9</target>
            </configuration>
        </plugin>
    </plugins>
</build>

Edit2: Я попытался добавить следующее В конфигурацию maven-compiler-plugin:

<compilerArgs>
    <arg>--add-modules</arg><arg>spring.web</arg>
</compilerArgs>

а затем попытался скомпилировать его с помощью "mvn compile-X", чтобы получить полный журнал отладки, поэтому я выполнил командную строку для сборник:

[INFO] Changes detected - recompiling the module!
[DEBUG] Classpath:
[DEBUG] Source roots:
[DEBUG]  D:Workgitreposmymoduleprojectsrcmainjava
[DEBUG]  D:Workgitreposmymoduleprojecttargetgenerated-sourcesannotations
[DEBUG] Command line options:
[DEBUG] -d D:Workgitreposmymoduleprojecttargetclasses -sourcepath D:Workgitreposmymoduleprojectsrcmainjava;D:Workgitreposmymoduleprojecttargetgenerated-sourcesannotations; -s D:Work
gitreposmymoduleprojecttargetgenerated-sourcesannotations -g -nowarn -target 1.9 -source 1.9 -encoding UTF-8 --add-modules spring.web

но опять же ... Я получаю

module-info.java:[2,20] module not found: spring.web

и то же самое для всех других модулей ...

Edit3:

Я создал новый проект, и новый компилируется отлично (но мне все еще нужно, чтобы исходный проект был скомпилирован!). Я сделал ту же команду "mvn compile-X", и вот что я получаю:

[INFO] Changes detected - recompiling the module!
[DEBUG] Classpath:
[DEBUG]  C:Usersmyuser.m2repositoryorgspringframeworkspring-web.0.4.RELEASEspring-web-5.0.4.RELEASE.jar
[DEBUG]  C:Usersmyuser.m2repositoryorgspringframeworkspring-beans.0.4.RELEASEspring-beans-5.0.4.RELEASE.jar
[DEBUG]  C:Usersmyuser.m2repositoryorgspringframeworkspring-core.0.4.RELEASEspring-core-5.0.4.RELEASE.jar
[DEBUG]  C:Usersmyuser.m2repositoryorgspringframeworkspring-jcl.0.4.RELEASEspring-jcl-5.0.4.RELEASE.jar
[DEBUG]  C:Usersmyuser.m2repositoryorgspringframeworkbootspring-boot-starter.0.0.RELEASEspring-boot-starter-2.0.0.RELEASE.jar
[DEBUG]  C:Usersmyuser.m2repositoryorgspringframeworkspring-aop.0.4.RELEASEspring-aop-5.0.4.RELEASE.jar
[DEBUG]  C:Usersmyuser.m2repositoryorgspringframeworkspring-expression.0.4.RELEASEspring-expression-5.0.4.RELEASE.jar
[DEBUG]  C:Usersmyuser.m2repositoryorgspringframeworkbootspring-boot-starter-logging.0.0.RELEASEspring-boot-starter-logging-2.0.0.RELEASE.jar
[DEBUG]  C:Usersmyuser.m2repositorychqoslogbacklogback-classic.2.3logback-classic-1.2.3.jar
[DEBUG]  C:Usersmyuser.m2repositorychqoslogbacklogback-core.2.3logback-core-1.2.3.jar
[DEBUG]  C:Usersmyuser.m2repositoryorgapachelogginglog4jlog4j-to-slf4j.10.0log4j-to-slf4j-2.10.0.jar
[DEBUG]  C:Usersmyuser.m2repositoryorgapachelogginglog4jlog4j-api.10.0log4j-api-2.10.0.jar
[DEBUG]  C:Usersmyuser.m2repositoryorgslf4jjul-to-slf4j.7.25jul-to-slf4j-1.7.25.jar
[DEBUG]  C:Usersmyuser.m2repositoryjavaxannotationjavax.annotation-api.3.2javax.annotation-api-1.3.2.jar
[DEBUG]  C:Usersmyuser.m2repositoryorgslf4jslf4j-api.7.25slf4j-api-1.7.25.jar
[DEBUG] Modulepath:
[DEBUG]  C:Usersmyuser.m2repositoryorgspringframeworkbootspring-boot-autoconfigure.0.0.RELEASEspring-boot-autoconfigure-2.0.0.RELEASE.jar
[DEBUG]  C:Usersmyuser.m2repositoryorgspringframeworkbootspring-boot.0.0.RELEASEspring-boot-2.0.0.RELEASE.jar
[DEBUG]  D:Workgitreposdemojavamodulestargetclasses
[DEBUG]  C:Usersmyuser.m2repositoryorgspringframeworkspring-context.0.4.RELEASEspring-context-5.0.4.RELEASE.jar
[DEBUG] Source roots:
[DEBUG]  D:Workgitreposdemojavamodulessrcmainjava
[DEBUG]  D:Workgitreposdemojavamodulestargetgenerated-sourcesannotations
[DEBUG] Command line options:
[DEBUG] -d D:Workgitreposdemojavamodulestargetclasses -classpath C:Usersmyuser.m2repositoryorgspringframeworkspring-web.0.4.RELEASEspring-web-5.0.4.RELEASE.jar;C:Usersmyuser.m2repository
orgspringframeworkspring-beans.0.4.RELEASEspring-beans-5.0.4.RELEASE.jar;C:Usersmyuser.m2repositoryorgspringframeworkspring-core.0.4.RELEASEspring-core-5.0.4.RELEASE.jar;C:Usersmyuser.m2re
positoryorgspringframeworkspring-jcl.0.4.RELEASEspring-jcl-5.0.4.RELEASE.jar;C:Usersmyuser.m2repositoryorgspringframeworkbootspring-boot-starter.0.0.RELEASEspring-boot-starter-2.0.0.RELEAS
E.jar;C:Usersmyuser.m2repositoryorgspringframeworkspring-aop.0.4.RELEASEspring-aop-5.0.4.RELEASE.jar;C:Usersmyuser.m2repositoryorgspringframeworkspring-expression.0.4.RELEASEspring-expres
sion-5.0.4.RELEASE.jar;C:Usersmyuser.m2repositoryorgspringframeworkbootspring-boot-starter-logging.0.0.RELEASEspring-boot-starter-logging-2.0.0.RELEASE.jar;C:Usersmyuser.m2repositorychqoslo
gbacklogback-classic.2.3logback-classic-1.2.3.jar;C:Usersmyuser.m2repositorychqoslogbacklogback-core.2.3logback-core-1.2.3.jar;C:Usersmyuser.m2repositoryorgapachelogginglog4jlog4j-to-
slf4j.10.0log4j-to-slf4j-2.10.0.jar;C:Usersmyuser.m2repositoryorgapachelogginglog4jlog4j-api.10.0log4j-api-2.10.0.jar;C:Usersmyuser.m2repositoryorgslf4jjul-to-slf4j.7.25jul-to-slf4j-
1.7.25.jar;C:Usersmyuser.m2repositoryjavaxannotationjavax.annotation-api.3.2javax.annotation-api-1.3.2.jar;C:Usersmyuser.m2repositoryorgslf4jslf4j-api.7.25slf4j-api-1.7.25.jar; --module-p
ath C:Usersmyuser.m2repositoryorgspringframeworkbootspring-boot-autoconfigure.0.0.RELEASEspring-boot-autoconfigure-2.0.0.RELEASE.jar;C:Usersmyuser.m2repositoryorgspringframeworkbootspring-
boot.0.0.RELEASEspring-boot-2.0.0.RELEASE.jar;D:Workgitreposdemojavamodulestargetclasses;C:Usersmyuser.m2repositoryorgspringframeworkspring-context.0.4.RELEASEspring-context-5.0.4.RELEAS
E.jar; -sourcepath D:Workgitreposdemojavamodulessrcmainjava;D:Workgitreposdemojavamodulestargetgenerated-sourcesannotations; -s D:Workgitreposdemojavamodulestargetgenerated-sourcesan
notations -g -parameters -nowarn -target 1.9 -source 1.9 -encoding UTF-8

почему я получаю "путь модуля" в новом проекте и так много других опций в командной строке Maven и я не получаю их в моем первоначальном проекте?

1 ответов


хорошо, Проблема вышла в pom.в XML! Причина, по которой я получал ошибку "модуль не найден" во время компиляции, была скрыта за предупреждением, которое я думал, не важно, поэтому я не вставлял здесь в журналы. Предупреждение было "заголовок zip END не найден". Причина получения этого предупреждения заключалась в том, что в моих зависимостях была "деформированная банка", и, таким образом, компилятор терпел неудачу во время разбора module-info.java-файл и производил вышеуказанные ошибки. Но одна из них - "деформированная" банка? Выяснилось, что это именно он (я использовал метод исключения один за другим ... ):

    <dependency>
        <groupId>org.apache.sshd</groupId>
        <artifactId>apache-sshd</artifactId>
        <version>1.7.0</version>
        <type>pom</type>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-jdk14</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

Я получил эту зависимость от https://mvnrepository.com при поиске apache sshd я не совсем уверен, что означает "тип pom", но я предполагаю, что, поскольку Apache Mina-это набор из нескольких проектов, таким образом, вы включаете все проекты ... в любом случае, мне нужен был только apache-sshd-core из всех проектов, поэтому я изменил зависимость на следующее (сообщество Apache Mina Dev сообщило мне об этом, поэтому большое спасибо им!!!):

<dependency>
    <groupId>org.apache.sshd</groupId>
    <artifactId>sshd-core</artifactId>
    <version>1.7.0</version>
</dependency>

и теперь все компилируется просто замечательно! Спасибо большое всем за комментарии и помощь!