intellij-idea - IntelliJ JavaDoc - 错误 - 无法读取输入长度 = 1

标签 intellij-idea character-encoding windows-10 javadoc windows-1252

我知道有很多关于这个问题的问题,但没有人为我解决!我正在使用 IntelliJ 的社区版,并尝试通过 IDE 运行 JavaDoc。每次运行哪个文件都没有关系,我运行 JavaDoc 我得到以下输出:

javadoc: error - cannot read Input length = 1

我已经想通了,这可能是编码问题......我正在使用 Windows 10 机器。我已经尝试了以下方法:
  • JavaDoc argfile encoding error
  • 使用 cmd.exe /K chcp 65001 从 IntelliJ 启动终端而不是默认的 cmd.exe将字符集设置为 UTF-8
  • 我还通过 IntelliJ 设置将项目的默认字符集设置为 UTF-8(参见:This Guide)

  • 问题似乎是 javadoc_args file 分别是那个文件的路径...路径是 C:\Users\Somebody Müller\AppData\Local\Temp\javadoc_args .此外,如果我从 IntelliJ 查看文件,所有 ü 字符替换为未知符号。

    我知道我可以通过 Maven 插件生成文档,但我更愿意通过 IntelliJ IDE 来做...

    有人可以详细确定问题和/或提供解决方案或部分解决方案吗?

    编辑

    skomisa用简单的语言描述情况/行为:

    For me the javadoc_args file does not exist! I see it is named in the Javadoc window as an argument to javadoc.exe, and if I click the link its content is shown in a pop up window within Intellij IDEA, but if I check in File Explorer there is no such file. Is this the case for you as well? I have no idea how it gets generated. Also, I created a project in a folder named Müller and the ü was rendered as � within the popup window that showed the content of javadoc_args.



    2018 年 4 月 12 日更新

    正如 skomisa 已经评论过的那样,JetBrains 计划在 future 版本中修复这个错误,可能是在版本 中。 2019.1(内部版本 191.2458) .

    更新 22/02/2019

    我知道这个问题已经很老了,但似乎仍然相关。到目前为止,我还没有检查 JetBrains 是否修复了该错误,但是当我尝试在 SceneBuilder 内部从外部打开 JavaFX fxml 时,发生了类似的错误。在另一个 post关于重命名 Windows 10 用户目录我找到了一个至少对于 Windows 用户可能的解决方法!只需在没有 ü 的情况下创建一个额外的用户目录在路径和现有路径的链接中:
    C:
    CD\Users
    MKLINK /J Müller Mueller
    

    如果您现在使用链接作为项目路径的目录,它应该可以正常工作。

    最佳答案

    如果路径名称包含字符 ü (带有变音符号的 u),我将无法在 Intellij IDEA 中为项目生成 Javadoc。解决方法是重命名项目,以便项目目录文件路径不包含变音。

    重现:

  • 使用项目向导创建一个简单的 Java Hello World 项目,其中根目录名称包含 ü 。我使用 Müller 进行测试。
  • 确保 main() 的类包含有效的 Javadoc 文档。
  • 构建并运行项目以验证没有意外问题。
  • 选择 工具 > 生成 Javadoc ,指定一个空的 输出目录 并单击 OK 0x1045。
  • Javadoc 创建失败并出现错误 - 无法读取 Input length = 1(如下所示),然后单击指向 的链接 C:\Users\johndoe\AppData\Local\Temp\javadoc_args 显示 文件中的 0x1045056767 路径被(错误地)表示为 �,这大概是导致 Javadoc 错误的原因。
  • 但是,一旦根目录从 Müller 重命名为 Muller (删除变音符号),Javadoc 创建工作:

    javadocWorks
  • 作为健全性检查,将项目从 Muller 重命名回 Müller 以重新引入错误:

    javadocFails

  • 笔记:
  • 正如评论中所指出的, javadoc_args 文件不存在,我认为在 Javadoc 创建过程中没有办法阻止它的使用。
  • 项目名称为 Müller 不是问题;它在导致问题的项目文件路径中有 ü
  • 环境:Windows 10 + Intellij IDEA 2018 3.1 EAP(终极版)+ Open JDK 10。
  • 我为此向 JetBrains 提出了一个错误报告:https://youtrack.jetbrains.com/issue/IDEA-202849


  • 更新 11/25/18

    此问题有一个解决方法,无需重命名项目的路径:
  • 运行 生成 Javadoc 并让它失败。
  • 单击文件 .../javadoc_args 的链接,显示在 Javadoc 窗口中。
  • 将文件 javadoc_args 的内容复制并粘贴到文本编辑器中。
  • 更正任何错误表示的字符(例如,将 Müller 更改为 Müller )。
  • 使用UTF-8 编码保存文件,并使用相同的绝对文件名。
  • 打开一个 命令提示符 窗口。
  • 从 Intellij IDEA 的 Javadoc 窗口复制整个 javadoc.exe 命令并将其粘贴到 命令提示符 窗口。
  • 提交粘贴的行。它现在可以工作了,因为在文件 javadoc_args 中正确指定了项目的路径。
  • 关于intellij-idea - IntelliJ JavaDoc - 错误 - 无法读取输入长度 = 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53248589/

    相关文章:

    java - 带 Bouncy CaSTLe 的库 JAR

    c++ - 将全精度 double 输出到文本文件的最佳方法

    powershell - 有没有办法对任何用户使用 ConvertFrom-SecureString 和 ConvertTo-SecureString?

    c# - SpeechSynthesizer 无法获取所有已安装的声音 3

    java - Android Studio 为新添加的方法添加测试

    scala - 在IntelliJ中导入基于Gradle的Scala构建失败

    java - Intellij IDEA 是否有一个热键来生成 bean mutators/contsructors/toString/etc 方法?

    sql - ALTER 语句 : Why VARCHAR2(50 BYTE) instead of VARCHAR2(50 CHAR)?

    java - 在 Java 中编写 unicode 字符?

    windows-10 - 如何运行Ada编写的程序?