如何解决Eclipse在webapp-javaee7原型Maven项目中没有为javax.annotation包显示Javadocs的问题?

时间:2017-07-02 12:46:34

标签: java eclipse maven

我正在使用Eclipse Oxygen,但这也是Neon版本中的问题。我已经开始新的Maven项目并选择了webapp-javaee7原型。完成项目创建后,pom.xml配置如下:

<properties>
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
                <compilerArguments>
                    <endorseddirs>${endorsed.dir}</endorseddirs>
                </compilerArguments>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <phase>validate</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${endorsed.dir}</outputDirectory>
                        <silent>true</silent>
                        <artifactItems>
                            <artifactItem>
                                <groupId>javax</groupId>
                                <artifactId>javaee-endorsed-api</artifactId>
                                <version>7.0</version>
                                <type>jar</type>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

因此,javaee-endorsed-api-7.0.jar被添加到Endorsed库中。据我所知,this post该jar文件包含Annotations包javax.annotation。

我已将包javax.annotation导入到此项目中的某些类中,并使用了一些注释。当我将鼠标悬停在其中一些注释上时,我收到消息:Note: This element neither has attached source nor attached Javadoc and hence no Javadoc could be found.

当我尝试打开&#34;附加&#34;浏览器中的Javadoc我收到警告对话框,说明:The documentation location for (annotation name) has not been configured. For elements from libraries specify the Javadoc location URL on properties page of the parent JAR ...\target\endorsed\javaee-endorsed-api-7.0.jar

无法将源代码或Javadoc附加到javaee-endorsed-api-7.0.jar。

当我创建普通的Java项目并使用javax.annotation包时,Javadocs会按预期显示。

如何解决这个问题,让Eclipse在我正在研究的Maven项目中为javax.annotation包显示Javadocs?

感谢。

4 个答案:

答案 0 :(得分:1)

我在this post的评论中找到了此问题的解决方案。解决方案是基于项目的:

  • 选择特定项目
  • 转到项目 - &gt;属性 - &gt; Java构建路径 - &gt;订单和出口
  • 重新排序库,直到出现javadoc。

对我而言,它将JRE系统库放在了赞同的库之上。这意味着Eclipse按照此选项卡指定的顺序从库中提取javadoc。并且因为所有用于注释的javadoc都是在放置在jdk安装的正确目录中的javadoc中定义的(在此选项卡上注释为JRE系统库),现在它们在Eclipse中显示为预期。

solving issu This element neither has attached source nor attached Javadoc and hence no Javadoc could be found.

答案 1 :(得分:0)

它可能是依赖问题,也可能是JDK和JRE版本,我可以在JDK 8上尝试这个并使用6.0版本的javaee-web-api。您也可以将答案引用到stackoverflow链接here

答案 2 :(得分:0)

你的解决方案对我不起作用(也许我只是没有对它们进行足够的重新排序?)但是如果有其他人遇到同样的问题,这对我来说是直接的:

我删除了所有库(项目,库),清理了项目,以便所有缺少的依赖项显示为错误,然后添加它们并再次清理配置文件。也许这可以帮助某人

答案 3 :(得分:0)

Maven将不会下载未在pom.xml中明确取消的依赖项的源。我使用的是弹簧靴,因此不必包括java.persistence,因为弹簧靴会不加提及地将其包括在内。我要解决的问题是像这样在pom.xml中明确指定java.persistence

<dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>javax.persistence-api</artifactId>
    <!-- <version>2.2</version> -->
</dependency>

注意:我注释了该版本,因为Spring Boot会为我选择最佳版本。