學習《算法(第 4 版)》Java 版時,運行右側代碼正常,左側代碼卻報 cannot find symbol: class Std,錯誤行數高達 400+ 行。更離譜的是:手動展開項目結構找不到 algs4 包,但全局搜索卻能搜到該包及 Std 類。
// 失效寫法
import edu.princeton.cs.algs4.*;
// 生效寫法
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;
import pkg.*; 僅導入 該包下的類,不包含子包。edu.princeton.cs.algs4 是一個包,其下可能有 StdIn、StdOut 等類,但 無子包。Std 類確實在 algs4 包下,通配符導入理應生效。algs4.jar 時,IDE(如 IntelliJ IDEA / Eclipse)未完成索引構建。import pkg.Class)編譯器直接查找字節碼,不依賴 IDE 索引,故能通過。algs4.jar 在 Project Structure → Modules → Dependencies 中標記為 Compile。javac -cp algs4.jar *.java 若通過,說明環境無誤,純屬 IDE 問題。「通配符導入失效、具體導入生效」絕非語法規則差異,而是 IDE 索引滯後 導致的假象。養成「具體導入 + 定期清理緩存」習慣,可徹底規避此類靈異事件。