从一个java类到另一个java类调用方法时出现问题

从一个java类到另一个java类调用方法时出现问题,java,Java,我有一个文件夹PackagesAndMethods。在那个文件夹里我有两个文件 TestMethods.java MyMethods.java 这些文件中的代码是 TestMethod.java MyMethods.java 问题是MyMethods.java类编译成功,但在编译TestMethods.java时,我遇到了以下错误 error: cannot find symbol int result = MyMethods.Total();

我有一个文件夹PackagesAndMethods。在那个文件夹里我有两个文件

TestMethods.java MyMethods.java 这些文件中的代码是

TestMethod.java

MyMethods.java

问题是MyMethods.java类编译成功,但在编译TestMethods.java时,我遇到了以下错误

error: cannot find symbol
                int result = MyMethods.Total();
                             ^
  symbol:   variable MyMethods
  location: class TestMethods
1 error 

我做错了什么?

变量MyMethods没有声明,您应该创建一个类MyMethods的实例,作为MyMethods MyMethods=new MyMethods;并使用myMethods;
请记住,实例应该是小写的,类应该是大写的,方法应该是小写的。首先,您需要先编译MyMethods.java。然后编译TestMethod.java。然后运行TestMethod


我认为您首先要编译TestMethod.java。因此,编译器无法找到MyMethods.class文件。

如果使用此命令编译:

javac.exe PackagesAndMethods*.java


编译文件时没有任何错误

问题在于如何编译。您通常应该从包根目录进行编译,理想情况下还应该指定一个输出根目录。例如,从父目录D:\Java:

或者更简单地说:

> javac -d classes PackagesAndMethods\*.java
目前,编译器希望找到一个名为PackagesAndMethods的目录,以便在PackagesAndMethods目录中查找类

我个人会将源代码分离到它自己的单独目录中,以使其远离输出,因此您最终会得到:

> javac -d classes src\PackagesAndMethods\*.java

如果您在一个IDE中工作,而IDE为您管理所有这些,那么您可能会发现从一开始就比较简单。将源代码和输出分开仍然是值得的。

您是如何编译类的?编译后的类MyMethods在类路径中吗?请告诉我们更多关于您如何编译所有内容的信息。还要注意,包名和方法名都应该是小写的,以遵循Java命名约定。这可能不是问题,但它有助于养成良好的习惯。此外,如果你正在使用IDE,你应该,尝试清理,然后重试-有时IDE不同步,清理和重建会确保编译的是最新版本。@Jens:我正在使用命令D:\Java\PackagesAndMethods>javac MyMethods.Java和D:\Java\PackagesAndMethods>javac TestMethods.Java使用cmd提示符编译类文件。第一个已成功编译并在PackagesAndMethods文件夹中获取类文件。但是在编译第二个one-TestMethods.java时出现了这个错误。@amit:是的,我试图清理文件夹并再次编译类,但没有任何更改。它是一个静态方法,所以应该可以直接调用。我在我的案例中发现错误javac:file not found:PackagesAndMethods*.java当使用命令javac.exe PackagesAndMethods*.java对不起javac.exe PackagesAndMethods\*.javaNo我已经编译了MyMethods.java并在PackagesAndMethods文件夹中获得了类文件。但是TestMethods.java没有编译。这就是问题所在。首先创建一个名为PackagesAndMethods的目录。将所有.java文件放在该。。编译MyMethods.java并放入PackagesAndMethods文件夹。dhen将当前工作目录更改为父目录。如果路径是c:\PackagesAndMethods,则更改为c:\n然后执行c:\>javac-cp。PackagesAndMethods/TestMethods.java
> javac -d classes PackagesAndMethods\MyMethods.java
> javac -d classes -cp classes PackagesAndMethods\TestMethods.java
> javac -d classes PackagesAndMethods\*.java
> javac -d classes src\PackagesAndMethods\*.java