Eclipse告诉我一个方法在明确实际定义时是未定义的

时间:2012-07-26 14:40:16

标签: java eclipse java-ee rad

我在RAD 7.5工作。我正在将一个包从一个Web项目导入到另一个Web项目中。我实例化该类并尝试使用其中一个方法,但是我得到一个构建错误,该方法未定义。该方法是公开的。除此之外,所有其他方法都有效。我正在导入的项目正确构建。我已经尝试删除这两个项目,再次从版本控制中抓取它们,然后重建它们。究竟是什么问题或者我可以在日食中检查什么(RAD 7.5)?

其他信息:

被调用的方法不是静态的。它是公共的,并且是从非静态的,受保护的方法中调用的。

代码段

我正在导入的课程:

package com.state;

public TelcoVariableTracker() {
    super();
}

public boolean isMedicalFlag() {
    return isMedicalFlag;
}

包含构建错误的类:

import com.state.TelcoVariableTracker;

protected method() {

TelcoVariableTracker phoneInfo = HttpSessionUtils.getTelcoVariableTracker(request);

    if (phoneInfo.isMedicalFlag() {  // Build error: The method isMedicalFlag() is undefined for the type TelcoVariableTracker
        // Do things
    }
}

8 个答案:

答案 0 :(得分:1)

该类可以在同一个包中声明两次。因此,只加载第一个类,第二个类有你缺少的方法。

多么糟糕,你隐藏了一个方法:D

答案 1 :(得分:1)

我遇到了同样的问题,清理项目就可以解决问题了:)

答案 2 :(得分:0)

此Eclipse插件Classpath Helper可以显示已阻止的类:http://classpathhelper.sourceforge.net/

当你在不同的jar中有相同的类时,就会发生阻塞类。

答案 3 :(得分:0)

我有同样的问题。 Eclipse正在从相同的两个jar中获取相同的代码,即使它们是在两个单独的工作区中声明的。我正在使用项目 - 工作空间和项目 - workspace_new。

我删除了其他工作区并完成了一个干净的项目,但最初没有用。我有多个位置,相同的罐子。我实际上不得不关闭我的笔记本电脑以清除一切,因为关闭并重新启动eclipse无法修复它。然而,在我这样做之后,一切都解决了,编译错误就消失了。 然后我添加了工作区,我已经移除了,eclipse能够保持干净。

答案 4 :(得分:0)

您的类路径中有一个重复的类。在我的例子中,Schema.getLogicalType()给出了一个方法未定义的错误,但其他Schema方法工作正常,并将显示在Eclipse辅助中。我突出显示getLogicalType并按下F3并链接了源。这个方法确实存在。我在打开.classpath时找到了修复程序。源链接到不同的jar文件。它与phoenix-4.7.0-HBase-1.1-client.jar相关联,并且其中包含较旧的org.apache.avro.Schema包。 phoenix.jar与我的avro-1.8.1.jar冲突。所以我只是从类路径中删除了phoenix.jar来解决问题。希望这能让您了解如何修复方法未定义的错误。

答案 5 :(得分:0)

我也遇到过这个问题。在我的情况下,我在实际创建函数之前编写了对函数的调用,因此最初错误是预期的。但是在创建函数之后,错误仍然存​​在。我似乎eclipse缓存了选项卡中的错误,并且在选项卡之间切换时没有重新检查错误。关闭并重新打开选项卡为我修复了它。

答案 6 :(得分:0)

可能是你的源代码中的类和同名的类,但在jar中有较旧且没有该方法的类。你看到jar类。

答案 7 :(得分:0)

我有同样的问题。关闭并打开标签是不够的。不得不重启eclipse。