簡體   English   中英

使用命令行javac“找不到符號”錯誤

[英]javac “cannot find symbol” error with command line

我有兩個班級Owning和OwningAccessor。 這些文件位於同一目錄中。

public class Owning {
    String _name = "";
    public void printBanner()
    {
    }
    public void printOwning(double amount)
    {
        printBanner();

        //print details
        System.out.println("name:" + _name);
        System.out.println("amount:" + amount);
    }
}


public class OwningAccessor {
    public void access()
    {
        Owning o = new Owning();
        o.printOwning(500);
    }
}

當我嘗試使用javac -cp . OwningAccessor.java編譯OwningAccessorjavac -cp . OwningAccessor.java javac -cp . OwningAccessor.java ,我收到了編譯錯誤。

symbol  : class Owning
location: class smcho.OwningAccessor
        Owning o = new Owning();
        ^
OwningAccessor.java:6: cannot find symbol
symbol  : class Owning
location: class smcho.OwningAccessor
        Owning o = new Owning();
                   ^

這有什么問題? 代碼在eclipse IDE下編譯得很好。

好的,我們假設您將代碼分布在文件中,如下所示

myproject
├── out
└── src
    ├── OwningAccessor.java
    └── Owning.java

轉到命令提示符,將目錄更改為myproject 一旦發出以下命令:

javac -d out -sourcepath src src/OwningAccessor.java

我只是測試它,它工作得很好。 您編譯的類將位於out文件夾中:

.
├── out
│   ├── OwningAccessor.class
│   └── Owning.class
└── src
    ├── OwningAccessor.java
    └── Owning.java

編譯一個類將觸發所有其他依賴類的編譯。 編譯器將自動在src文件夾中查找它們。

確保編譯Owning.java和OwningAccessor.java,如下所示:

javac -cp . Owning.java OwningAccessor.java

Eclipse為您編譯所有必需的文件,這就是為什么在那里工作。

嘗試制作正確的源路徑示例:

javac -d temp -sourcepath c:\awork\JavaProjects\singleton\src\ c:\JavaProjects\singleton\src\com\company\MySingleton.java

javac -d temp -sourcepath c:\awork\JavaProjects\singleton\src\ c:\JavaProjects\singleton\src\com\company\Main.java

在“temp”中我們分配資源,而-sourcepath指示.java文件在哪里。

因此,在名為D:\\ Automation的目錄中,有一個文件Demo.java拋出此錯誤,當您在D:\\ Automation時,在cmd中,您需要: - 1)cd .. //將從Automation中拉出來目錄。 在D:> 2)javac Automation \\ Demo.java

這將編譯您的文件 - Demo.java

暫無
暫無

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

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