我有一个文件夹 PackagesAndMethods 。在该文件夹中我有两个文件
这些文件中的代码是,
TestMethod.java
package PackagesAndMethods;
public class TestMethods
{
public static void main(String args[])
{
int result = MyMethods.Total();
System.out.println(result);
}
}
MyMethods.java
package PackagesAndMethods;
public class MyMethods
{
public static int Total()
{
return 10;
}
}
问题是“MyMethods.java”类成功编译但是在编译“TestMethods.java”时,我收到了以下错误
error: cannot find symbol
int result = MyMethods.Total();
^
symbol: variable MyMethods
location: class TestMethods
1 error
我做错了什么?
答案 0 :(得分:1)
问题在于你如何编译。您通常应该从"包根"进行编译,理想情况下也要指定输出根。例如,从父目录(D:\Java
):
> javac -d classes PackagesAndMethods\MyMethods.java
> javac -d classes -cp classes PackagesAndMethods\TestMethods.java
或更简单:
> javac -d classes PackagesAndMethods\*.java
目前编译器希望找到一个名为PackagesAndMethods
的目录来查找PackagesAndMethods
目录中的类。
我个人将源代码分离到自己独立的目录中,以使其远离输出,因此您最终得到:
> javac -d classes src\PackagesAndMethods\*.java
如果你在一个管理所有这一切的IDE中工作,你很可能会发现它更容易开始。它仍然值得分离出来源和输出。
答案 1 :(得分:0)
首先,您需要首先编译MyMethods.java。然后编译TestMethod.java。然后运行TestMethod。
我认为你首先要编译TestMethod.java。所以编译器无法找到MyMethods.class文件。
答案 2 :(得分:0)
如果我用这个命令编译:
javac.exe PackagesAndMethods * .java
编译文件时没有任何错误
答案 3 :(得分:-1)
未声明变量MyMethods,您应该将类MyMethods的实例创建为MyMethods myMethods = new MyMethods();
并使用myMethods.Total();
(记住,实例应该是小写,类是大写,方法是小写