我有一个奇怪的错误。我在同一个包中有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的路径包含到CLASSPATH
和A.java
编译好了,但是B找不到A出于某些原因...
当我删除两个类中的package com.mypackage;
时,它们编译正常。
答案 0 :(得分:4)
由于您正在编译不同包中的Java文件,因此您必须确保它们编译到适当的目录。
您可以使用此调用来执行此操作。将$SRC
替换为源文件的位置,您可以让$BIN
成为当前目录或计算机上的其他位置。
javac -sourcepath $SRC -d $BIN A.java B.java
当你想要运行它们时,你必须再次手动将它们添加到类路径中(但这不是一件坏事)。
java -cp $BIN com.mypackage.B
此调用应该有效;只是确定了A.java和B.java驻留在我的桌面上。使用-d
标志,确保在编译时,它们转到相应的包文件夹方案。
答案 1 :(得分:3)
应该是:
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();
}
}