【问题标题】:Java file cannot access methods even though class file is in same directory即使类文件在同一目录中,Java 文件也无法访问方法
【发布时间】:2013-02-23 16:43:03
【问题描述】:

我只得到了一个 .class 文件用于作业,需要编写一个访问其方法的程序。好吧,我在同一目录中有 .class 文件,但我无法访问它的方法,所以我的程序无法编译!我已经尝试过 JGrasp 和 Eclipse。两者都“找不到符号”(方法名称)。

我绝对肯定我使用了正确的方法名称。为什么它不起作用?

这是我在 Hw.java 中的代码

public class Hw {

    public static void main(String[] args) 
    {
     int[] a1 = {1, 2, 3, 4, 5};
        int[] a2 = {5, 4, 3, 2, 1};
        int[] a3 = {1};
        int[] a4 = {2, 5, 3, 1, 4};
        int[] a5 = {1, 2, 1};

        System.out.println(sortA(a1));        
        System.out.println(sortA(a2));
        System.out.println(sortA(a3));
        System.out.println(sortA(a4));
        System.out.println(sortA(a5));        
  }
}

我在 JGrasp 中遇到的错误:

Hw.java:11:错误:找不到符号 System.out.println(sortA(a1));
^ 符号:方法 sortA(int[]) 位置:Hw类

【问题讨论】:

  • 看不到代码我们就忍不住了。
  • 请发布您的示例代码和您遇到的错误。
  • 是某个包中的方法吗?
  • 可能.class文件中的类没有在默认包中声明?

标签: java


【解决方案1】:

如果sortA 是给定类的静态方法,则必须使用类名对其进行限定:

System.out.println(GivenClass.sortA(a1));

【讨论】:

    【解决方案2】:

    您必须创建该类的实例并调用 sort 方法。

        System.out.println(new ThatClass().sortA(a1));        
    

    如果 sortA(a1) 是一个静态方法,你应该在类名上调用它。

        System.out.println(ThatClassName.sortA(a1));        
    

    【讨论】:

      【解决方案3】:

      如何在没有来自另一个类的对象的情况下访问方法...如果您尝试对所有方法进行排序,那么您的 .class 引用将调用...

      【讨论】:

        【解决方案4】:

        您需要首先导入特定的类..打开 .class 文件,您会注意到上面写了一些包名..所以记下它..现在将您的类文件放入您的 eclipse..并在您的 Hw.java 中导入该包..确保您这样做..说包名称是 p1 然后这样写import p1.* 以确保您拥有其中存在的所有类..
        现在 Eclipse 和其他 IDE 具有智能感知功能,因此您可以利用它。我的意思是制作该类的一个对象并使用该对象按下期(点 . )来了解该类提供的带有签名的方法。并使用它..
        我注意到一件事,您还没有创建对象来访问排序方法。你需要先这样做..如果方法是静态的..然后做静态导入所以你不必指定类名..像这样import static p1.*

        希望这会有所帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-06-30
          • 1970-01-01
          • 2021-08-13
          • 1970-01-01
          • 1970-01-01
          • 2019-06-27
          • 2016-06-07
          • 2017-09-07
          相关资源
          最近更新 更多