Java/VSCode,错误包不存在

kd3sttzy  于 2023-01-24  发布在  Java
关注(0)|答案(1)|浏览(403)

我有以下目录结构。我尝试导入从Maven存储库下载的.jar文件。

不幸的是,我收到了一个关于数据绑定和注解的“Package Does Not Exist Error”(包不存在错误)。Test.java:

import java.io.IOException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.annotation.JsonProperty;

public class Test {
   public static void main(String args[]) throws IOException {
      ObjectMapper mapper = new ObjectMapper();
      String json = "{\"id\" : 1}";
      Student student = mapper.readerFor(Student.class).readValue(json);
      System.out.println(student.getTheId());
   }
}
class Student {
   private int id;
   Student(){}
   Student(int id){
      this.id = id;
   }
   @JsonProperty("id")
   public int getTheId() {
      return id;
   }
   @JsonProperty("id")
   public void setTheId(int id) {
      this.id = id;
   }   
}

奇怪的是智能感知检测到了这个包;然而,当我编译www.example.com时Test.java,Java编译器无法在.jar文件中找到包。
下面是我的设置.json的副本:

{
    "java.project.sourcePaths": [
        ".",
        "lib\\jar"
    ],
    "java.project.referencedLibraries": {
        "include": [
            "lib/**/*.jar"
        ],
    }
}

.jar文件在我的项目库中,ClassPath指向包含.jar文件的文件夹。知道这是怎么回事吗?为什么IntelliSense和Java编译器之间会断开连接?
谢谢!

aiazj4mn

aiazj4mn1#

我修复了这个问题。我删除了windows中的所有内容,并重新创建了以下目录结构:

我的settings.json文件:

{
    "java.project.referencedLibraries": [
        "lib/**/*.jar",
        "src/jar/jackson_annotations.jar",
        "src/jar/jackson_databind.jar",
        "src/jar/jackson-core-2.14.1.jar",
    ],
    "java.project.sourcePaths": [
        "src\\jar",
        "."
    ],
    "java.project.outputPath": "bin"
}

我可以构建并运行这段代码。VSCode实现的Powershell运行命令是:

& 'C:\Program Files\Java\jdk-19\bin\java.exe' '@C:\Users\LUKESL~1\AppData\Local\Temp\cp_1u6y7pr0vey3xwzkph587nlcw.argfile' 'src.JacksonTester'

然而,当我删除bin目录并单击run(没有预编译)时,问题出现了。

Error: Could not find or load main class src.JacksonTester
Caused by: java.lang.ClassNotFoundException: src.JacksonTester

这太奇怪了。有人知道这是怎么回事吗?我仍然可以操作,但这种行为使使用VSCode变得笨拙。
谢谢

相关问题