[英]“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實用程序(例如java
和javac
)如何使用它來查找類文件。 Oracle“ 設置類路徑 ”頁面提供了更簡潔的更多信息......但您需要仔細閱讀。
順便說一句,你的代碼中有一些風格暴行:
Class
是一個壞主意,因為這會與默認導入的名為java.lang.Class
的類發生沖突。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.