2009-11-25 24 views
0

我在一個目錄中有兩個java文件,它們都不在一個包中。我希望他們中的一個能夠引用另一個。什麼是正確的方法來做到這一點?java「找不到符號」 - 如何在同一目錄下導入文件?

A級

目前,我試圖引用類B,並收到此錯誤:下面

[javac] A.java:11: cannot find symbol 
[javac] symbol : constructor B(java.lang.String) 
[javac] location: class B 
[javac]   B b = new B(path); 
[javac]    ^

毫無效果:

    在一個
  • ,做 「進口B;」
  • 加入「package myPackage;」到A和B

謝謝!

+0

你可以發佈你的javac命令行嗎? –

+0

你可以發佈代碼嗎?有一個改變,你沒有一個構造函數使用字符串 – OscarRyz

+0

這兩個類都在同一個目錄下,都沒有聲明一個包(即兩個都在默認包中),將包含源文件的目錄添加到javac classpath 。 – rsp

回答

3

你沒有發佈您的代碼,所以我的答案可能是錯的,但最有可能您正在嘗試使用在B中的構造函數使用一個字符串作爲參數時,有沒有這樣的規定。

這裏是我的測試:

class A { 
    B b = new B("b"); 
} 
class B { 

} 

$javac A.java 

A.java:2: cannot find symbol 
symbol : constructor B(java.lang.String) 
location: class B 
    B b = new B("b"); 
     ^
1 error 

看起來同樣不?

0

可能你沒有正確設置你的編譯依賴和類路徑。如果A需要B,則需要首先編譯B才能獲得B.class,並且在編譯A時,確保B.class位置位於類路徑中,以便編譯器可以找到它。

+0

你是如何做到這一點的? –

+0

據我所知,javac會自動編譯所有的依賴類。 – rsp

+0

@rsp你是對的。自從我進行手動命令行編譯以來已經有一段時間了,我想我記得C編譯器的行爲:D –

4

此外,如果您在每個文件中都有包引用,則需要從根目錄進行編譯。我有這個相同的問題,打這個網頁,沒有任何答案真的幫助。所以,我有2個文件:

〜/工作/ COM /域/包裝/庫/ A.java

〜/工作/ COM /域/包裝/庫/ B.java

A. Java的:

package com.domain.pkg.library; 

class A { 
} 

B.java:

package com.domain.pkg.library; 

class B { 
    A a = new A(); 
} 

你需要在〜/工作類型:

javac com/domain/pkg/library/B.java 

希望能幫助別人。