我试图将应用程序升级到Java11.0.2,从Java8。这是我使用拼图模块的第一步!
我的应用程序使用Guice,以及Assistedinject
和Throwing供应商
扩展。
这是我当前的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包
我得到没有错误。但是在Eclipse(2018-12)中,我有这个错误“包com.google.inject可以从多个模块访问”:
我试着在moduleinfo中对每个必需的模块进行注释。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>
这里有一个最小的项目来重现我的错误。
这里有一段关于这个问题的视频(为了清晰起见,可以用1080P观看!)。
您的测试项目已经在4.11的RC2中工作(将于2019年3月20日发布)
您可以在以下位置下载发行候选版本:https://download.eclipse.org/eclipse/downloads/drops4/S-4.11RC2-201903070500/
我可以在我的机器上重现错误(相同的Eclipse版本,OpenJDK 11),在Apache NetBeans IDE 10.0上运行良好。
似乎是Eclipse中的一个错误,你应该在这里归档。您已经有了一个重现错误的最小项目,这很有帮助。
Eclipse使用自己的编译器,在遵循规范方面甚至比javac更严格。您需要在模块信息中使用不同的模块/JAR,这些模块/JAR都使用com包。谷歌。注射这是一种JPMS规范中不允许的拆分包的情况。AFAIK javac只会在相同包中有不同模块的实际类时产生错误,但eclipse编译器在这里更挑剔。
有一些解决拆分包问题的解决方案。如果您没有找到解决问题的更新版本的libs(不幸的是,对于今天的大多数依赖项来说,这不太可能),您可以将模块合并到一个自定义模块中,但这当然不是一个完美的解决方案。
有关此问题的更多背景信息,请参见Eclipse在将构建路径切换到JDK 10和https://bugs.openjdk.java.net/browse/JDK-8215739后找不到与XML相关的类
尝试在JMX控制台中注册MBean时,我收到以下错误消息: 我正在使用Eclipse,我的项目结构中没有文件。 当我注释我对javaeeapi的依赖关系时,错误消失了,但是包不是JAR的一部分。
我的环境: Java 11 不确定如何修复此错误:
我的项目在Java1.8u151中运行良好。我正在尝试将它升级到Java12,但是我得到了以下错误。 这是唯一的错误,在Java12中的大多数包中都会重复出现,但在Java8中效果良好。 我已尝试将所有jar文件从模块路径移动到类路径。模块路径中只有Java 12库。我在Java版本的软件包中寻找任何不推荐的东西。我用不同的Java版本尝试了3种不同的系统(都运行OS-X10.13.6、10.13
我已经研究了好几天了,似乎所有的答案都是特定于Eclipse的。我在Visual Studio Code上遇到此错误: 这将出现在包含导入。 使用: Java 11.0.4 Gradle构建时没有问题,因此错误消息表示终端和VSCode之间存在某种断开连接。 到目前为止,我已经: 确保和匹配 任何帮助都将不胜感激,谢谢您的时间! 我知道这个问题,但一直没有答案。
我在用java导入文件时遇到了一个错误,因为“包java.util可以从多个模块访问:error”。
我正在使用: 火狐56.0.1 硒3.6.0 Windows 10家庭版 壁虎司机0.19.0 错误消息是 包组织。openqa。selenium可以从多个模块访问:客户端。合并,净额。bytebuddy“