【问题标题】:Java can not find method of classJava找不到类的方法
【发布时间】:2017-07-12 06:54:40
【问题描述】:

我正在尝试调用我自制的“过滤器”类的方法,但编译器找不到该方法。

这有点棘手,因为我在 Eclipse 中编写代码,一切似乎都很好。但是我必须将我的代码复制到另一个软件中并在那里编译。另一方面,这个编译器找不到我的方法。

我假设 Eclipse 编译器可能“允许”更多我什至不知道的错误。然而,另一个编译器与他们斗争。

这是“其他”编译器打印的错误代码:

C:\Program Files\Enomic\enomic-server\data\rules\testcompileboehmch\CodeTest.java:77: error: cannot find symbol filt.setHasRemoved(true);
symbol:   method setHasRemoved(boolean)
location: variable filt of type tms.Filter

我不知道为什么我的课程不正确。正如上面在 Eclipse 中所说,一切正常。

CodeTest 类(精简到重要部分):

package tms;

import tms.Filter;
import java.util.*;

    Filter filt = new Filter();
    filt.setHasRemoved(true);//cannot be found

我的过滤器类:

package tms;

import java.util.ArrayList;
import java.util.List;

public class Filter {

private List<Object> remainingList;
private List<Object> removedList;
private Object typ;
private boolean hasRemoved;

public Filter()
{
    this.remainingList = new ArrayList<Object>();
    this.removedList = new ArrayList<Object>();
    this.typ = new Object();
    this.hasRemoved = false;
}   
public Filter(List<Object> remaining, List<Object> removed, Object typ, boolean hasRemoved)
{
    this.remainingList = new ArrayList<>();
    if(remaining != null)
    {
        this.remainingList.addAll(remaining);
    }
    this.removedList = new ArrayList<>();
    if(removed != null)
    {
        this.removedList.addAll(removed);
    }
    this.typ = typ;
    this.hasRemoved = hasRemoved;
}

//Set-Methoden      
public void setRemainingList(List<Object> list)
{
    this.remainingList.clear();
    this.remainingList.addAll(list);
}
public void setRemovedList(List<Object> list)
{
    this.removedList.clear();
    this.removedList.addAll(list);
}
public void setTyp(Object val)
{
    this.typ = val;
}
public void setHasRemoved(boolean val)
{
    this.hasRemoved = val;
}

//Get-Methoden
public List<Object> getRemainingList()
{
    return this.remainingList;
}
public List<Object> getRemovedList()
{
    return this.removedList;
}
public Object getTyp()
{
    return this.typ;
}
public boolean getHasRemoved()
{
    return this.hasRemoved;
}
} 

我真的不知道为什么这不起作用。有什么我看不到的错误吗?

【问题讨论】:

  • 检查您的导入。
  • 您是否使用了正确的Filter 类?例如。导入正确吗?自从添加了这些方法后,你确定重新编译了Filter 吗?
  • 你的类路径中有两个版本的类吗?
  • 导入工作正常。 “Filter filt = new Filter()”行有效,因此该类被识别
  • 有很多类叫做Filter - 你可能弄错了 - 向我们展示你的导入语句。

标签: java eclipse compiler-errors


【解决方案1】:

这里:

C:\Program Files\Enomic\enomic-server\data\rules\testcompileboehmch\CodeTest.java:77: 错误:找不到

还有

package tms;

重点是:java 编译器期望 folder 结构类似于 package 结构。

所以您的问题是您的类存在于名为tms 的目录中。

eclipse 在这里工作也很奇怪。从这个意义上说:例如,您想阅读 herethere

不,Eclipse Java 编译器与其他产品的工作方式不同,只有极少数微妙的事情。请放心:您作为新手遇到此类事情的机会非常接近于零。您的问题是由于您不了解如何编译 java 文件的基础知识造成的。 (当您开始使用 Eclipse 等 IDE 学习编程时,这就是不利的一面 - IDE 对您隐藏了许多这些东西。然后,当您需要它时 - 您不知道发生了什么)。

【讨论】:

  • 我猜过滤器的初始化工作的唯一原因是因为找到并使用了另一个过滤器类?而不是我做的那个?或者为什么我能够初始化过滤器但不能使用它的方法? (假设它们是否都正确,这是我的主要问题)
【解决方案2】:

通过重命名我的过滤器类,我能够解决问题。看起来编译器从来不知道我指的是哪个类。 尽管如此,感谢您的所有帮助,您将我引向了正确的方向。

给我自己(也许还有其他人)的注意事项:想出你自己的班级名称!

【讨论】:

  • 好吧。很高兴你以某种方式找到了答案。既然您已达到该级别,请随时练习投票。
猜你喜欢
  • 2016-02-11
  • 2011-11-30
  • 2013-06-13
  • 1970-01-01
  • 2014-03-24
  • 1970-01-01
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
相关资源
最近更新 更多