簡體   English   中英

“無法查找符號”編譯錯誤

[英]“Cannot Find Symbol” compile error

我的編碼經驗只回溯了幾年,所以這個問題應該很容易回答。

我寫了兩個接口:Class和Game。 接口CLASS應該擴展接口GAME。

以下是兩個界面來源:

package Impl;

public interface Game
{
    //METHODS AND VARS
}


package Impl;    

public interface Class extends Game
{
    //METHODS AND VARS
}

現在,當我嘗試編譯第二個接口時,我收到以下錯誤

class.java:4: cannot find symbol
symbol: class Game
public interface Class extends Game
                               ^

我的Game類被編譯,類文件與兩個java文件在同一目錄中。 我一直無法找到解決方案。 有沒有人有任何想法?

類名稱區分大小寫。 您可能已經創建了一個名為game的接口,但您在Class接口聲明中將其稱為Game ,編譯器無法找到它。

但是,您可以在Impl包中進行編譯。 為此,您需要引用類路徑,以便編譯器可以從包結構的基礎中查找類。 您可以在類名之前將-classpath .. arg添加到您的javac

javac -classpath .. Class.java

或者,您可以執行更常見的操作,從包結構的根目錄進行編譯。 為此,您需要指定Class文件的路徑:

javac Impl\Class.java

你總是可以添加一個-classpath . 要清楚。

您需要了解Java類路徑的工作方式以及如何組織源代碼。 基本上,你的問題是當javac編譯器編譯“Class.java”時,它不希望在當前目錄中找到“Game.class”。 它(可能)正在“Impl / Game.class”中尋找它。

IBM“ 管理Java類路徑 ”頁面深入討論了如何設置類路徑以及java實用程序(例如javajavac )如何使用它來查找類文件。 Oracle“ 設置類路徑 ”頁面提供了更簡潔的更多信息......但您需要仔細閱讀。

順便說一句,你的代碼中有一些風格暴行:

  • Java包名稱應該全部小寫。
  • 調用類Class是一個壞主意,因為這會與默認導入的名為java.lang.Class的類發生沖突。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM