【问题标题】:Java cannot access class, class file not foundJava无法访问类,找不到类文件
【发布时间】:2016-07-24 07:18:26
【问题描述】:

当我尝试在 IntelliJ 中创建项目时,我在这一行收到以下错误:

Sentence sent = new Sentence();
 sent.emptySegments();

错误:

Error:(151, 10) java: cannot access javax.xml.bind.RootElement
class file for javax.xml.bind.RootElement not found

Sentence 是一个实现RootElement 接口

的类
import javax.xml.bind.RootElement;
...
public class Sentence extends MarshallableRootElement implements RootElement   {

所有包都存在,我可以跳转到每个接口或类的声明,但我不知道为什么 IntellJ 说它无法访问或找到它们?然而RootElement 是一个接口而不是一个类

public interface RootElement extends Element {
    void validate() throws StructureValidationException;
}

上述声明位于名为jaxb-rt-1.0-ea.jar 的jar 文件中,它存在于项目库管理器中。

【问题讨论】:

  • 很明显,jaxb-rt-1.0-ea.jar 是否在构建时添加到您的项目依赖项中?
  • @TimBiegeleisen 我想我解决了,我将 jar 文件添加到有错误的模块依赖项
  • 这就是我猜的问题所在。
  • @TimBiegeleisen 谢谢,完整的答案在我的回答中

标签: java intellij-idea interface jaxb


【解决方案1】:

试试这个

  1. 转到文件
  2. 使缓存无效/重新启动
  3. 您只能选择 Invalidate and restart

(参见 IntelliJ 手册中的 Invalidate caches

【讨论】:

  • 有时 Intellij 只是 DumbJ。为我工作。
  • 你刚刚拯救了一个灵魂
【解决方案2】:

重建项目对我有用。

【讨论】:

    【解决方案3】:

    该项目包含几个模块。虽然该库已添加到项目库中,但某些模块在其依赖部分中缺少它。所以我在 IntelliJ 中使用以下步骤解决了这个问题

    创建模块库并将其添加到模块依赖项中:

    1. 打开项目结构对话框(例如 Ctrl+Shift+Alt+S)。
    2. 在对话框的左侧窗格中,选择模块。
    3. 在右侧窗格中,选择感兴趣的模块。
    4. 在对话框右侧的“模块”页面上,选择“依赖项”选项卡。
    5. 在 Dependencies 选项卡上,单击 +(右上角)并选择 Jars 或目录。
    6. 在打开的对话框中,选择必要的文件和文件夹。这些可能 是单独的 .class 和 .java 文件、目录和档案
      (.jar 和 .zip)包含此类文件以及带有
      的目录 Java 原生库(.dll、.so 或 .jnilib)。
    7. 单击确定。如有必要,请选择“导出”选项并更改依赖范围。
    8. 在“项目结构”对话框中单击“确定”。

    【讨论】:

    • 我为什么要做这个?
    • 对我来说,编译运行良好,但在我的项目中,IDE 显示为红色下划线。我发现依赖项被标记为运行时范围。一旦我使模块依赖范围编译,它删除了红色下划线。
    • 可能是,它是解决 intellij 问题的解决方法。谢谢
    【解决方案4】:

    删除.idea 文件夹然后运行Invalidate Caches/Restart 对我有用。

    【讨论】:

    • 只是使缓存无效/重新启动对我有用。
    【解决方案5】:

    如果是单个文件,您可以尝试删除该文件并撤消它。它似乎只重新索引该特定文件,这比 Invalidate Caches/Restart 快得多。作为预防措施,您可以在删除之前备份文件,以防万一出现问题。

    另一个原因可能是同一个库的不同版本具有更多/更少的方法。这发生在我的 Gradle 上。有时它编译得很好,有时却没有。只需找到并删除不必要的即可。

    【讨论】:

      【解决方案6】:

      文件 -> 使缓存无效/重新启动 经过长时间无效率的工作,这对我有用

      【讨论】:

        【解决方案7】:

        这也可能是因为您在依赖项中使用的类路径中没有依赖项。
        例如:您使用库 A,但您从 A 使用的类具有超类来自库 B。但是您没有将 B 添加到类路径中。

        【讨论】:

          【解决方案8】:

          我的 Gradle/IntelliJ“大锤”

          (可选,但首选)。关闭 IntelliJ 或任何其他 Java IDE 的所有实例。

          删除“.idea”文件夹(

          .......

          ./gradlew --stop       
                OR
          gradle --stop
          

          (现在删除文件夹)

          rm -rf $HOME/.gradle/caches/
          
          rm -rf $HOME/.gradle/build-cache-tmp/
          

          (现在恢复正常的 gradlew 命令,例如:)

          ./gradlew clean build
          

          【讨论】:

            【解决方案9】:

            对于我刚刚工作,关闭windows defender/添加排除项目文件夹/idea过程。

            【讨论】:

              【解决方案10】:

              如果使用 maven 范围 runtime 导入库,可能会发生类似问题。

              在这种情况下,位于src/main/java 下的类无法访问它。

              只有src/test/java中的类可以直接使用runtime依赖。

              【讨论】:

                【解决方案11】:

                我删除了这个位置“amazonaws”文件并稍后运行全新安装

                /Users/testuser/.m2/repository/com/amazonaws
                

                【讨论】:

                  猜你喜欢
                  • 2019-03-11
                  • 1970-01-01
                  • 1970-01-01
                  • 2019-02-14
                  • 2018-02-04
                  • 2019-09-17
                  • 2018-07-20
                  • 1970-01-01
                  • 2022-12-01
                  相关资源
                  最近更新 更多