问题描述
我正在学习Java。要在应用程序中读取JSON,我下载了this JSON library;这是一个自动模块。
我将该库包含在我的模块描述符中,例如:
module art
{
exports art.anixt;
exports art.coartl;
exports art.runeape;
requires org.json; // org.json cannot be resolved to a moduleJava(8389908)
}
我的vscode中的settings.json:
{
"files.exclude": {
"**/.classpath": true,"**/.project": true,"**/.settings": true,"**/.factorypath": true
},"java.format.settings.url": "Format.xml","java.format.settings.profile": "style","java.project.referencedLibraries": [
"lib/**/*.jar" // jar file showing in Referenced library(see screenshot)
]
}
屏幕截图:
解决方法
TL; DR -由于此未解决的'Cannot be resolved' errors in projects with module-info.java问题报告,在涉及JPMS和module-info.java时,vscode死于脑筋。>
冗长的版本
根据我的经验,我可以亲自为上述链接的vscode问题报告的报告人提供担保...
„ ...我尝试过Gradle和Maven ... ”
...
„ …我发现Gradle和Maven将自动刷新类路径文件并删除我对其的修改,这将带回错误……”
...
„ …为了让Eclipse感到高兴,需要在类路径文件中设置模块路径信息,但是从Gradle或Maven那里并没有很好的处理方法……” >
证明这是vscode问题是完全相同的项目-除了删除您的注释外,其他项目均未更改-在IntelliJ中完全可以编译…
由于您的项目既不使用Maven也不使用Gradle,所以-相反,选择在div
文件夹中的jar中使用基于文件的依赖项mgt -由于您取消了应用任何支持JPMS的插件来解决问题的选项。
例如,通过将以下具有适当配置的pom.xml添加到 lib
到我的项目的实验版本中……
maven-compiler-plugin
…Maven发挥了魔力并成功处理了模块info.java ...
我已经通过帮助其他堆叠者应用that mrJar plugin mentioned in that vscode bug report成功解决了其他堆叠者的JPMS问题。因此,如果您愿意使用Gradle而不是Maven,我也可以为您提供有关如何配置该插件的建议。