【问题标题】:Calling a method from another class in Java doesn't work? [closed]从 Java 中的另一个类调用方法不起作用? [关闭]
【发布时间】:2016-09-18 13:59:27
【问题描述】:

所以我有两个 java 文件(每个都有一个公共类)在同一个包中保存在同一个文件夹中。文件夹层次结构反映了包名称。现在,在其中一个类中,我想调用另一个类的方法。就我而言,这可以通过致电:someClass.someMethod(); 来完成。 当我这样做时,文件不符合要求。它会产生一条错误消息,指出它找不到该方法。* 我检查了拼写错误,但没有。我还尝试通过使用import somePackage.someClass 导入类来帮助程序,但没有任何结果。我可以使它工作的唯一方法是从两个文件中删除包或将方法复制到另一个文件,从长远来看,这些都不是可取的。

您知道导致错误的原因以及如何解决吗? 非常感谢!

  • 错误如下所示:

    TestBit.java:7: error: cannot find symbol boolean value = someClass.someMethod(arg1, arg2); ^ symbol: variable someClass location: class otherClass 1 error"

编辑:
这是代码:

package uk.ac.prejava.ex1; 
public class PackedLong{
        public static boolean get(long packed, int position) {
            long check = (packed>>>position)& 1;
            return (check == 1);
        }
    }

package uk.ac.prejava.ex1;
public class TestBit {

  public static void main(String[] args) {
  long currentValue = Long.decode(args[0]);
  int position = Integer.parseInt(args[1]);
  boolean value =PackedLong.get(currentValue, position);
  System.out.println(value);

} }

我想在第二类调用PackedLong.get,但是在遵守javac时找不到文件。

【问题讨论】:

  • 你是如何定义你的 someclass 的 someMethod 的?
  • 请添加您的代码,没有它很难找到解决方案。
  • 您必须首先拥有someClass 的实例。
  • 并遵循 java 命名约定。包全部小写;但是课程以大写字母开头。不遵守那些简单的规则会让你的代码非常混乱。
  • @MichałSzewczyk 我现在已经添加了我的代码!

标签: java class methods compiler-errors


【解决方案1】:

我假设你的包结构如下:

  • 一些包

    • 一些类

    • 其他类

这可能是错误的。编译代码时,您应该位于 somePackage 上方的目录中。因此,当您看到目录列表时,您应该只看到 somePackage。现在您必须使用以下代码编译该类:

  javac somePackage/otherClass.java

希望有效。

【讨论】:

  • 这是我一直做不到的!我不知道为什么,但如果我在包目录中,我似乎只能遵守代码,否则我会收到“找不到文件”错误。但是,正如您所描述的,我只能从包上方的目录中运行代码。你知道什么可能导致这个问题吗?
  • 您需要在somePackage 正上方的文件夹中并输入javac somePackage/otherClass.java/ 而不是.
  • @Whatzs 哦,我明白了!现在它可以正常工作了!但是,当我运行一个类文件时,我仍然使用.,不是吗?
  • @Whatzs 哇!按照您的建议,我可以毫无问题地遵守上述要求中的两个文件!
  • 相应地更正了帖子。谢谢
猜你喜欢
  • 1970-01-01
  • 2020-06-07
  • 2013-03-05
  • 1970-01-01
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-15
相关资源
最近更新 更多