Java无法访问类,找不到类文件
当我尝试在IntelliJ中创建项目时,我在这一行收到以下错误: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
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