java包:找不到符号

我有一个奇怪的错误。 我在同一个包中有2个类,但他们找不到对方。 从我记忆中来看,只要这些类在同一个包中,它们就应该能够调用彼此的方法。

我的代码看起来类似于:

在A.java中:

package com.mypackage; public class A{ public static int read(){ //some code } } 

在B.java:

 package com.mypackage; public class B{ public static void main(String args[]){ int x = A.read(); } } 

它给了我一个cannot find symbol variable A错误。

这两个类都依赖于一些.jar文件,但是我已经将这些jar的路径包含到CLASSPATHA.java编译得很好,但B由于某些原因找不到A …

当我删除package com.mypackage; 在这两个类中,然后他们编译好。

由于您正在编译不同包中的Java文件,因此您必须确保它们编译到适当的目录。

您可以使用此调用来执行此操作。 用源文件的位置替换$SRC ,您可以让$BIN成为当前目录或计算机上的其他位置。

 javac -sourcepath $SRC -d $BIN A.java B.java 

当你想运行它们时,你必须再次手动将它们添加到类路径中(但这不是一件坏事)。

 java -cp $BIN com.mypackage.B 

这个调用应该有效; 只是确定了A.java和B.java驻留在我的桌面上。 使用-d标志,确保在编译时,它们转到相应的包文件夹方案。

它应该是:

A.java

 package com.mypackage; class A { public static int read(){ //some code } } 

B.java

 package com.mypackage; class B { public static void main(String args[]){ int x = A.read(); } }