当前位置: 首页 > 知识库问答 >
问题:

软件包com.google.inject可从多个模块访问

曾宏毅
2023-03-14

我试图将应用程序升级到Java11.0.2,从Java8。这是我使用拼图模块的第一步!

我的应用程序使用Guice,以及AssistedinjectThrowing供应商扩展。

这是我当前的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观看!)。

共有3个答案

慕高格
2023-03-14

您的测试项目已经在4.11的RC2中工作(将于2019年3月20日发布)

您可以在以下位置下载发行候选版本:https://download.eclipse.org/eclipse/downloads/drops4/S-4.11RC2-201903070500/

司寇光华
2023-03-14

我可以在我的机器上重现错误(相同的Eclipse版本,OpenJDK 11),在Apache NetBeans IDE 10.0上运行良好。

似乎是Eclipse中的一个错误,你应该在这里归档。您已经有了一个重现错误的最小项目,这很有帮助。

崔棋
2023-03-14

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“