"没有公开或受保护的课程发现文件"带重音的路径出错

时间:2016-10-11 14:01:10

标签: intellij-idea maven-3 javadoc maven-javadoc-plugin

My Maven Java 8项目位于包含重音符号的路径中:C:\Développements\myproject

当我使用maven-javadoc-plugin(最后2.10.4版本的事件)时,当我尝试生成项目的javadoc时,我遇到此错误(来自IntelliJ IDEA 2016.2.4):

[ERROR] javadoc: warning - No source files for package com.mycompany.myproject
[ERROR] javadoc: error - No public or protected classes found to document.

这很奇怪,因为我在这个项目中记录了类。

5 个答案:

答案 0 :(得分:2)

如果您的测试类中没有公共方法,也会发生此错误,这正是发生的原因,因为Sonar lint规则S5786表示JUnits应该具有默认的包可见性,以提高可读性。幸运的是,您可以使用-package javadoc选项来解决此问题。如果将其放在父pom中:

 <properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <java.version>1.8</java.version>
  <maven.compiler.version>3.8.1</maven.compiler.version>
  <junit.version>5.7.0</junit.version>
 </properties>
...
<build>
  <pluginManagement>
   <plugins>
    <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-compiler-plugin</artifactId>
     <version>${maven.compiler.version}</version>
     <configuration>
      <source>${java.version}</source>
      <target>${java.version}</target>
     </configuration>
    </plugin>
    <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-surefire-plugin</artifactId>
     <version>3.0.0-M4</version>
    </plugin>
    <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-site-plugin</artifactId>
     <version>3.9.1</version>
    </plugin>
    <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-project-info-reports-plugin</artifactId>
     <version>3.1.1</version>
    </plugin>
    <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-javadoc-plugin</artifactId>
     <version>3.2.0</version>
     <configuration>
      <source>8</source>
      <additionalOptions>-package</additionalOptions>
     </configuration>
    </plugin>
   </plugins>
  </pluginManagement>
 </build>
 <reporting>
  <plugins>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
   </plugin>
  </plugins>
 </reporting>
 <distributionManagement>
  <site>
   <id>yourid</id>
   <url>file:///var/www/html/maven</url>
  </site>
 </distributionManagement>

然后

mvn site-deploy

将为您提供默认的Maven站点以及javadoc。包括与Java 8项目相关的所有内容。

答案 1 :(得分:0)

实际上这是来自maven-javadoc-plugin项目的引用错误:MJAVADOC-333

因此,由于它没有修复(目前是#34;关闭&#34; ...),因此应该从项目路径中删除重音...

答案 2 :(得分:0)

这不是Maven或插件问题,而是纯粹的Windows问题。 Microsoft在cmd.exe中拥有正确的编码集太愚蠢了。你有一些愚蠢的DOS编码。 Java javadoc使用它来读取@options文件并失败。

设置_JAVA_OPTIONS=-Dfile.encoding=UTF-8,您就完成了。或者,使用Linux发行版或FreeBSD。

问题仍然存在。

答案 3 :(得分:0)

当我使用main方法创建一个包私有类时,会发生这种情况。在将课程标记为公开后,包装步骤再次起作用。

答案 4 :(得分:0)

除了特殊字符(重音符号)问题之外,此 可能与您的pom.xml有关:

我现在在Eclipse中创建的项目遇到了同样的问题。 如果您在eclipse中创建一个项目,它将直接将Java包/源放在src文件夹中,并将以下行添加到pom.xml中:

<sourceDirectory>src</sourceDirectory>

如果您随后决定根据maven conventions移动Java文件,却忘记更新或删除 sourceDirectory 标记,那么最终将出现完全相同的错误:

您的项目可以正常运行,但是javadoc找不到源代码...