2013-06-28 72 views
0

我正在使用番石榴。 我得到一个“方法toStringHelper()未定义的类型对象错误”在日食。 我在没有错误的时候突然出现这些错误。toStringHelper()未定义类型对象

@Override 
public String toString() 
{ 
    return Objects 
     .toStringHelper(this) 
     .add("id", this.id) 
     .add("custid", this.custid) 
     .toString(); 
} 
+0

你可以显示你的eclipse标记为错误的代码吗? –

+1

您确定已导入并使用'com.google.common.base.Objects',但不是**'java.util.Objects'? – Xaerxess

+0

是的,我已经导入“import com.google.common.base.Objects;” –

回答

3

我会检查你的类路径中没有Google Collections(Guava的前身),例如, google-collect-1.0.jar。它有一个Objects类的版本,它没有toStringHelper方法。

另一种奇怪的可能性是,你必须在同一背景下的某处定义泛型类型Objects,如:

import com.google.common.base.MoreObjects; 

/** 
* In this class, "Objects" is a generic type parameter like "T", 
* just more confusing. 
*/ 
public class Foo<Objects> { 

    public String toString() { 
    return MoreObjects.toStringHelper(this) 
     ... 
    } 
} 

似乎不太可能,但是.... Guava docs

+0

不错的建议。但没有我没有找到任何其他的谷歌jar在项目类路径:( –

+0

编辑与另一种可能性,虽然它似乎更有可能的东西是重击Eclipse比你那样做并没有注意到。=) – ColinD

+0

修复了这个问题。已经发布了答案。 –

0

您的代码是正确的。它似乎是你的Eclipse搞砸了。做一个完整的清理/重建你的项目,和/或重新启动你的Eclipse和你的系统。我知道,这是巫术,但当Eclipse开始产生无意义的错误时,它通常会有所帮助。

+0

nope甚至尝试eclipse -clean ...仍然没有工作:( –

0

好了,所以有问题现在修好。 在部署Web项目时显然会添加osgi库,其中一个库有一个没有ToStringHelper方法的番石榴版本。消除了这一点,并没有问题了。