从一个java类调用方法到另一个java类的麻烦

时间:2015-01-27 10:27:14

标签: java

我有一个文件夹 PackagesAndMethods 。在该文件夹中我有两个文件

  1. TestMethods.java
  2. MyMethods.java
  3. 这些文件中的代码是,

    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 
    

    我做错了什么?

4 个答案:

答案 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(); (记住,实例应该是小写,类是大写,方法是小写