在Eclipse中引用新库

时间:2011-03-29 17:55:35

标签: java eclipse

请参阅附图:

enter image description here

1)我在这里下载了一个新图书馆:(http://www.java2s.com/Code/Jar/ABC/Downloadcommonslang24jar.htm

2)在Eclipse中,我右键单击“Referenced Libraries”>构建路径>配置构建路径>添加外部JAR并添加'commons-lang-2.4.jar'

3)我在课堂顶部添加了import org.apache.commons.lang.*

4)我从该班indexOfAny()输入了一个方法并收到以下错误:'The method indexOfAny() is undefined for the type String.'

我错过了哪些步骤?我采取了哪些步骤是不必要的?我需要能够使用这种方法。

P.S。请忽略其余的代码。

4 个答案:

答案 0 :(得分:4)

indexOfAny()不是String对象的方法。

也许你打算写StringUtils.indexOfAny(...)

答案 1 :(得分:2)

您正在尝试在字符串上使用这些方法,您应该阅读要使用的库的文档。

答案 2 :(得分:2)

您没有正确使用它,您尝试在indexOfAny()对象上调用方法java.lang.String - 此方法不属于该类。您需要在org.apache.commons.lang.StringUtils上静态调用这些方法 - 形式为StringUtils.XXX()

Commons Library不会扩充现有的类(在任何情况下,java.lang.String都是final)。根据{{​​3}},你的电话应该是这样的:

StringUtils.indexOfAny(quantityInForPriceBandPopUp[i], ['z'])

或使用其中一个重载版本。

<强>更新

  

是否需要导入包?

the documentationThis article应该有助于处理打包和导入的所有细节。但是要理解的一些基本事项是:

  1. 包是Java使用的命名空间机制 - 这允许您和我都编写Utils类,同时避免因同名而发生冲突。例如,java.sql.Datejava.util.Date - 两个Date类可以存在并可以使用,因为它们位于不同的包中。将包及其子包设想为文件夹层次结构可能会有所帮助。

  2. 导入是一项便利功能,可让您通过简单名称(MathString)而非其完全限定名称(FQN)(java.lang.Math或{ {1}})每次你想要使用它,这会让你的代码变得痛苦和混乱,使它的可读性降低。

  3. 导入不会为您的代码添加任何内容或使其效率降低,因为导入的包没有链接到您的代码或类似的东西 - 如上所述,它只是一种避免使用FQN一直都在。

  4. 所以要回答你的问题,不,导入不是必需的,但是你必须每次都使用java.lang.String而不是只能使用org.apache.commons.lang.StringUtils。因此,虽然没有必要,但对于您自己和将要尝试阅读您的代码的任何其他人来说,这通常都很方便。

答案 3 :(得分:2)

因为在文档中你有:

static int indexOfAny(String str, char[] searchChars)
  1. static ==你应该像这样调用这个方法:StringUtils.indexOfAny(...)
  2. String str ==把你的字符串放在这里
  3. char [] searchChars ==放置您正在搜索的字符数组
  4.   

    搜索字符串以查找第一个字符串   给定的任何字符的索引   一组字符。