Java找不到类的方法

时间:2017-07-12 06:54:41

标签: java eclipse compiler-errors

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

这有点棘手,因为我在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

我不知道为什么我的班级不正确。如上所述,在日食中一切正常。

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;
}
} 

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

2 个答案:

答案 0 :(得分:1)

下面:

  

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

并且

package tms;

重点是:java编译器期望文件夹结构类似于结构。

所以你的问题是你的类在名为tms的目录中存在

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

不,只有极少数微妙的东西,其中eclipse java编译器的工作方式与其他产品不同。请放心:作为新手遇到此类事情的可能性非常接近于零。您的问题是由于您不了解java文件的编译基础这一事实引起的。 (当你开始使用像eclipse这样的IDE学习编程时,这是一个缺点 - IDE隐藏了很多这些东西。然后,当你需要它时 - 你根本不知道发生了什么。)

答案 1 :(得分:1)

By renaming my Filter Class I was able to solve the problem. It looks like the Compiler never knew exactly to which class i was referring. Nevertheless thanks for all the help, you directed me into the right direction.

Note to myself (and maybe others too): Come up with your own class names!