今天使用vscode 编写java代码做测试时候,发现这个问题,大概总结一下。

 

目录结构

bao -> Point.java

test.java

 

package bao;

public class Point<T> {// 此处可以随便写标识符号
    private T x;
    private T y;

    public void setX(T x) {// 作为参数
        this.x = x;
    }

    public void setY(T y) {
        this.y = y;
    }

    public T getX() {// 作为返回值
        return this.x;
    }

    public T getY() {
        return this.y;
    }
};

 

import bao.Point;

public class test {
    public static void main(String[] args) {
        //IntegerPoint使用  
        Point<Integer> p = new Point<Integer>();   
        p.setX(new Integer(100)) ;   
        System.out.println(p.getX());    
  
        //FloatPoint使用  
        // Point<Float> p = new Point<Float>();   
        // p.setX(new Float(100.12f));   
        // System.out.println(p.getX());   
    }
}

 

编译报错:The declared package does not match the expected package bao Java

 

大概的原因是编译器在bao这个包名下找不到Point.java, 所以需要在vscode中把根目录加入到java的sourcepath

The declared package does not match the expected package Java

 

使得编译器在寻找Point.java时,以项目根目录作为基准寻找路径,这样就编译通过了。

 

另外还有, 有的时候你在主方法里run或者debug的时候,编译器虽然能输出最后结果,但还是会报"Build failed xxxxx",我查了下官网,说是

The declared package does not match the expected package Java

然后一看,原来我现在的项目路径下包含许多子项目,只要有一个子项目的文件存在语法错误,我这个项目编译时就会报“build failed”,所以以后用vscode详见项目最好还是以每个项目作为根目录来建。

相关文章: