【发布时间】:2019-03-05 00:34:17
【问题描述】:
我正在尝试将应用程序从 Java 8 升级到 Java 11.0.2。所以这是我使用 Jigsaw 模块的第一步!
我的应用程序使用 Guice、Assistedinject 和 Throwingproviders 扩展。
这是我目前的module-info.java:
`
module com.example.mymodule {
requires com.google.guice;
requires com.google.guice.extensions.assistedinject;
requires com.google.guice.extensions.throwingproviders;
//...
}
`
该应用程序基于 Maven,当我运行 mvn package 时,我没有收到任何错误。但是在 Eclipse (2018-12) 中,我有这个错误“`包 com.google.inject 可以从多个模块访问”:
我尝试在module-info.java 中评论每个必需的模块,但我显然需要它们中的三个。
我能做些什么来消除这个错误吗?还是这是一个 Eclipse 错误?
这是我的pom.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>com.example</groupId>
<artifactId>example</artifactId>
<version>1.0.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.7</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.7</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8.1</version>
</dependency>
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.26</version>
</dependency>
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>4.2.2</version>
</dependency>
<dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-throwingproviders</artifactId>
<version>4.2.2</version>
</dependency>
<dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-assistedinject</artifactId>
<version>4.2.2</version>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
</plugins>
</build>
</project>
这是一个minimal project 来重现我的错误。
这里是a video of the issue(为了清楚起见,请以 1080P 观看!)。
【问题讨论】:
-
你能显示 pom.xml 的内容吗?
-
@nitind
pom.xml已添加,谢谢。 -
你能发布更多关于你的 Eclipse 项目是如何设置的吗?我会检查您是否已将 Guice 添加为用户库(等)。如果是这样,Eclipse 可能会在它管理的类路径以及它从 Maven 获得的类路径上看到 Guice。如果他们都指定了 Guice,Eclipse 可能会确定您从多个模块获取 Guice,并且单独运行
mvn时不会出现相同的错误。 -
@JeffBowman - 我添加了一个最小的项目来重现问题和它的视频!感谢您的帮助。
-
我无法在 Eclipse 2019-03 的预览版中重现此问题。你能在M3复制它吗?
标签: java eclipse guice java-platform-module-system