繁体   English   中英

为什么 vscode 认为声明的 package 与预期的 package 不匹配?

[英]Why does vscode think the declared package doesn't match the expected package?

情况

我对来自 GitHub 的项目进行了以下操作

  1. 克隆项目:git clone https://github.com/antlr/antlr4.git
  2. 打开项目:代码antlr4
  3. 在项目中打开一个文件:Antlr4MojoTest.java

该文件在项目的以下路径下找到:antlr4/antlr4-maven-plugin/src/test/java/org/antlr/mojo/antlr4/Antlr4MojoTest.java

VSCode 告诉我:声明的 package“org.antlr.mojo.antlr4”与预期的 package“java.org.antlr.mojo.antlr4”不匹配

问题

为什么 vscode 认为预期的 package 是java.org.antlr.mojo.antlr4

一个解释

VSCode 期望 class 位于 package java.org.antlr.mojo中,因为插件 pom 设置为包含src/test ,正如@Sweeper所指出的。 这是模块 pom 中的行:

 <testSourceDirectory>src/test</testSourceDirectory>

VSCode 正确地将其下的所有内容理解为包含类的 package。 补救措施是更改目录结构以匹配 pom(例如,将java目录的内容向上移动一级)或更改 pom 以匹配目录结构(例如,将“/java”添加到 testSourceDirectory 标记的末尾)。

IMO 更改 pom 是更好的解决方案。 特别是 testSourceDirectory 标签应该被整个删除,因为默认的 testSourceDirectory 已经是'src/test/java'作为 super-pom 版本 3.8.6 (org.apache.maven:maven-model-builder:3.8.6:super -pom)。 不需要配置不需要配置的东西,因为默认会做(在这种情况下是正确的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM