Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java IntelliJ无法使用Maven解析符号第三方jar_Java_Maven_Intellij Idea - Fatal编程技术网

Java IntelliJ无法使用Maven解析符号第三方jar

Java IntelliJ无法使用Maven解析符号第三方jar,java,maven,intellij-idea,Java,Maven,Intellij Idea,我有一个第三方JAR,我通过mvn install:install file命令为它创建了一个工件。工件被添加到项目中,模块的pom.xml被很好地导入 不幸的是,使用第三方JAR中的符号创建Java类仍然没有解决。红色的灯泡显示出来,并且没有我预期的“导入类”选项 我试图使缓存无效,但没有成功 有什么想法吗 编辑如果我改为安装已编译的JAR,则符号将被解析。为什么会这样 编辑2添加显示内部共享工件的pom.xml <?xml version="1.0" encoding="UTF-8"?

我有一个第三方JAR,我通过
mvn install:install file
命令为它创建了一个工件。工件被添加到项目中,模块的
pom.xml
被很好地导入

不幸的是,使用第三方JAR中的符号创建Java类仍然没有解决。红色的灯泡显示出来,并且没有我预期的“导入类”选项

我试图使缓存无效,但没有成功

有什么想法吗

编辑如果我改为安装已编译的JAR,则符号将被解析。为什么会这样

编辑2添加显示内部共享工件的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>
    <packaging>pom</packaging>
    <name>Sandbox</name>
    <parent>
        <groupId>com.x.y</groupId>
        <artifactId>third-party-parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <groupId>com.x.y.z</groupId>
    <artifactId>thirdparty-z</artifactId>
    <version>1.0-SNAPSHOT</version>

     <dependencies>
         <dependency>
             <groupId>com.x.y.thirdparty</groupId>
             <artifactId>thirdparty-sources</artifactId>
             <version>1.0</version>
         </dependency>

         <dependency>
             <groupId>com.x.y.thirdparty</groupId>
             <artifactId>thirdparty-compiled</artifactId>
             <version>1.0</version>
         </dependency>
     </dependencies>

</project>

4.0.0
聚甲醛
沙箱
com.x.y
第三方母公司
1.0-快照
com.x.y.z
第三方
1.0-快照
第三方
第三方来源
1
第三方
第三方汇编
1

此Maven项目文件
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>

    <!--  Parent POM best at the top  -->
    <!--  WANRING: Here you import the parent of 3th party. This is (almost) never correct!!!  -->
    <!--  For a simple project, which only exists of 1 set of classes and unit tests, you do   -->
    <!--  not need a parent POM. Only for multi module Maven project, you will have a parent   -->
    <!--  POM. Or for organisation wide configuration, of repositories, Maven plugin           -->
    <!--  configuration, and so. When starting with a small project, leave out the parent POM  -->
    <!--  reference.                                                                           -->
    <parent>
        <groupId>com.x.y</groupId>
        <artifactId>third-party-parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <!--  Better keep all project stuff together  -->
    <groupId>com.x.y.z</groupId>
    <artifactId>your-project-name</artifactId>
    <packaging>pom</packaging>
    <name>My Little Sandbox</name>
    <version>1.0.0-SNAPSHOT</version>

    <dependencies>
        <!--  Here only a reference to the compiled jar is required!!!                   -->
        <!--  If a source jar is available, it will get pulled in automatically!!!       -->
        <!--  As this is done by (naming) convention of all jars, in a Maven repository  -->
        <dependency>
            <groupId>com.x.y.thirdparty</groupId>
            <artifactId>thirdparty</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>

</project>

4.0.0
com.x.y
第三方母公司
1.0-快照
com.x.y.z
您的项目名称
聚甲醛
我的小沙箱
1.0.0-SNAPSHOT
第三方
第三方
1
备注:新项目扩展第三方父POM的罕见情况是,新项目是第三方项目的某种扩展/插件。然后,它可以使用与第三方相同的Maven插件版本、依赖项等。这使得新的扩展/插件能够很好地与第三方软件的其他部分配合使用

尝试的具体例子


项目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">
4.0.0
org.organization.play-ground
我的小沙箱
聚甲醛
我的小沙箱
1.0.0-SNAPSHOT
org.slf4j
slf4j api
1.7.12
回写
回归经典
1.1.3
运行时
org.testng
testng
6.9.8
测试

组ID、工件ID和版本是否正确?(我的意思是,它们与您安装依赖项时使用的相同吗?)您是否在IntelliJ中更新了Maven项目?也许“Maven-下载源”会有所帮助,但不能确定pom设置是否正确,否则它不会首先导入IntelliJ,对吗?我可以导航到库并查看源代码。如果我试图直接引用一个类,比如com.x.y。它不起作用。IntelliJ能够自动完成com.x.y。但是它不会显示在下拉列表中,尽管它存在于源jar!中!。您是否尝试过mvn创意:idea@awsome我不会以那种方式导入项目。我只是将pom.xml改进为IntelliJ。@hajder,这让你更进一步了吗?
<?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>org.organisation.play-ground</groupId>
    <artifactId>my-little-sandbox</artifactId>
    <packaging>pom</packaging>
    <name>My Little Sandbox</name>
    <version>1.0.0-SNAPSHOT</version>

    <dependencies>
        <!--  A dependency reuired for each phase  -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.12</version>
        </dependency>

        <!--  A dependency only needed during runtime phase  -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.1.3</version>
            <scope>runtime</scope>
        </dependency>

        <!--  A dependency only needed during compile and test phase  -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.9.8</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>