今天使用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
使得編譯器在尋找Point.java時,以項目根目錄作為基准尋找路徑,這樣就編譯通過了。
另外還有, 有的時候你在主方法里run或者debug的時候,編譯器雖然能輸出最后結果,但還是會報"Build failed xxxxx",我查了下官網,說是
然后一看,原來我現在的項目路徑下包含許多子項目,只要有一個子項目的文件存在語法錯誤,我這個項目編譯時就會報“build failed”,所以以后用vscode詳見項目最好還是以每個項目作為根目錄來建。