![](/img/trans.png)
[英]Is there a way to define named queries not within entity classes nor a package-info.java?
[英]Using Classes within the same named package in Java
我正在嘗試創建存在於名為組件的命名包中的兩個類A和B。 A是一個公共類Window
而B是一個公共類Door
,它包含A的一個實例。問題是,使用
javac -classpath . Door.java
,B找不到A。
我知道我可以使此代碼在沒有導入子句的未命名默認包中工作,但是我希望這些文件存在於一個命名類中,以便可以將它們導入其他位置。
我已經向自己證明,如果package components;
, Door.java
將會編譯package components;
這兩個文件中的注釋行都被注釋掉了,但是我確實希望將其作為一個名為components的軟件包使用。
我也嘗試過使用import components.Window;
在B中,但這也不起作用。
//class A
package components;
public class Window{
public void rollup(){}
public void rolldown(){}
}
//class B
package components;
public class Door{
public Window window = new Window();
public void open(){}
public void close(){}
}
我當前的代碼顯示了這一點,這表明程序包B當前無法訪問程序包A。
Door.java:8: error: cannot find symbol
Window window = new Window();
^
如何修復此代碼,以允許B在同一個命名包中創建A的實例?
參考以下結構
/some/base/route/project/components
|- Window.java
|- Door.java
然后,運行javac -classpath . components/Door.java
/some/base/route/project
javac -classpath . components/Door.java
(以及javac components/Door.java
)應該可以工作。
請注意,您需要從1級最高的是開始為符合類的完全限定包名的目錄中運行命令。 這意味着,如果您從/some/base/route/project/components
內部運行命令,它將無法正常工作。
最后,添加import components.Window;
因為兩個類都在同一個包中,並且Window
聲明為public
,所以Door
類中的Window
是無用的,因為Window
已經在Door
可見。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.