Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java无法访问类,找不到类文件_Java_Intellij Idea_Interface_Jaxb - Fatal编程技术网

Java无法访问类,找不到类文件

Java无法访问类,找不到类文件,java,intellij-idea,interface,jaxb,Java,Intellij Idea,Interface,Jaxb,当我尝试在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 语句是一个实现根元素接口的类 import javax.xml.bind.Root

当我尝试在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
语句
是一个实现
根元素
接口的类

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文件中,它存在于项目库中。

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

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

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

  • 重建项目对我有用。

    试试这个

  • 归档
  • 使缓存无效/重新启动
  • 您可以选择“仅失效并重新启动”

  • 文件->使缓存无效/重新启动
    在长时间的无效后,这对我来说是有效的,这也可能是因为在类路径中没有依赖项,而在依赖项中使用了依赖项。

    例如:您使用库A,但从A使用的类具有库B中的超类。但您没有将B添加到类路径。

    删除
    .idea
    文件夹,然后运行
    使缓存无效/重新启动
    对我有效。

    我的Gradle/IntelliJ“big hammer”

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


    删除“.idea”文件夹(对于刚刚工作的我,请关闭windows defender/添加排除项目文件夹/idea进程。

    如果使用maven scope runtime导入库,则可能会发生类似问题

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


    只有
    src/test/java
    中的类才能直接使用运行时依赖项。

    问一个显而易见的问题,
    jaxb-rt-1.0-ea.jar是否在构建时添加到了项目依赖项中?@TimBiegeleisen我想我解决了这个问题,我将jar文件添加到了模块依赖项中,这就是我猜测的问题所在。@TimBiegeleisen谢谢,在我的回答中,完整的答案如下:为什么我要这样做?对我来说,编译运行得很好,但在我的项目中,IDE显示为红色下划线。我发现依赖项被标记为运行时范围。一旦我编译模块依赖项范围,它就删除了红色下划线。可能是,这是解决问题的方法谢谢,有时智能只是愚蠢,为我工作,你刚刚救了一个灵魂
    
    ./gradlew --stop       
          OR
    gradle --stop
    
    rm -rf $HOME/.gradle/caches/
    
    rm -rf $HOME/.gradle/build-cache-tmp/
    
    ./gradlew clean build