代码之家  ›  专栏  ›  技术社区  ›  Garret Wilson

maven javadoc插件错误javadoc:error-无法读取目录名中包含非ASCII字符的输入长度=1

  •  5
  • Garret Wilson  · 技术社区  · 7 年前

    我在Windows10上使用OpenJDK11。我有一个非常简单的POM,用于生成Javadocs的单个Java文件。以下是摘录:

    <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <maven.compiler.source>11</maven.compiler.source>
      <maven.compiler.target>11</maven.compiler.target>
    </properties>
    
    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.0.1</version>
          <executions>
            <execution>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </build>
    

    奇怪的是,我只是在跑步 mvn clean package

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:3.0.1:jar (default) on project foobar: MavenReportException: Error while generating Javadoc:
    [ERROR] Exit code: 1 - javadoc: error - cannot read Input length = 1
    [ERROR]
    [ERROR] Command line was: C:\bin\jdk-11\bin\javadoc.exe @options @packages
    

    在里面 target/apidocs javadoc.bat , options ,及 packages 选择权 UTF-8 到处都是,这是应该的。但请看以下几行:

    -sourcepath
    C:/projects/li��o 1/src/main/java
    

    这个项目正在进行中 C:\projects\lição 1 . 似乎在Java或Maven或Javadoc插件链的某个地方没有正确地将目录名转换为UTF-8。

    果不其然;当我重命名Windows中的目录以删除非ASCII字符时, 清洁包装 工作很好。

    1 回复  |  直到 7 年前
        1
  •  3
  •   df778899    7 年前

    正如您所说,这看起来像是用于将文件写入的编码 target/apidocs .

    this line .

    调用Maven时直接设置编码为我修复了上面的示例:

    mvn clean package -Dfile.encoding=UTF-8
    

    @options 在javadoc命令行中)已从使用平台编码切换到 here Files.newBufferedReader() here . Files.newBufferedReader(Path)