我遇到了一个奇怪的错误。我在同一个包中有 2 个类,但它们无法找到彼此。据我记得,只要类位于同一个包中,它们就应该能够调用彼此的方法。
我的代码看起来与此类似:
在A.java中:
package com.mypackage;
public class A{
public static int read(){
//some code
}
}
Run Code Online (Sandbox Code Playgroud)
在B.java中:
package com.mypackage;
public class B{
public static void main(String args[]){
int x = A.read();
}
}
Run Code Online (Sandbox Code Playgroud)
它给了我一个cannot find symbol variable A
错误。
这两个类都依赖于一些.jar
文件,但我已经包含了这些 jar 的路径CLASSPATH
并A.java
编译得很好,但由于某些原因 B 找不到 A...
当我删除package com.mypackage;
两个类中的 时,它们编译得很好。
由于您正在编译位于不同包中的 Java 文件,因此您必须确保它们编译到适当的目录。
您可以使用此调用来做到这一点。替换$SRC
为源文件的位置,您可以将$BIN
其设为当前目录或计算机上的其他位置。
javac -sourcepath $SRC -d $BIN A.java B.java
Run Code Online (Sandbox Code Playgroud)
当您想要运行它们时,您必须再次手动将它们添加到类路径中(但这并不是一件坏事)。
java -cp $BIN com.mypackage.B
Run Code Online (Sandbox Code Playgroud)
这个调用应该有效;只是通过我的桌面上的 A.java 和 B.java 确保了这一点。使用该-d
标志,可以确保编译时进入适当的包文件夹方案。
归档时间: |
|
查看次数: |
20634 次 |
最近记录: |