【发布时间】:2011-10-19 00:04:06
【问题描述】:
我正在尝试在我的本地计算机上运行 Lucene Java 应用程序。我得到这个编译错误:
package org.apache.commons.digester does not exist
因为
import org.apache.commons.digester.Digester;
编译器不是从网上下载包的吗? 如果没有,我该怎么办?
【问题讨论】:
我正在尝试在我的本地计算机上运行 Lucene Java 应用程序。我得到这个编译错误:
package org.apache.commons.digester does not exist
因为
import org.apache.commons.digester.Digester;
编译器不是从网上下载包的吗? 如果没有,我该怎么办?
【问题讨论】:
不,编译器不会从 Internet 下载包。如果您正确配置它们并将包添加到项目依赖项中,则某些构建管理工具(例如Maven)会执行此操作。但是如果没有这样的工具,您应该手动下载 jar 并将其放在编译器类路径中。
【讨论】:
如果您使用的是 Maven,您可以通过添加以下依赖项来下载该库:
<dependency>
<groupId>commons-digester</groupId>
<artifactId>commons-digester</artifactId>
<version>2.1</version>
否则你必须下载它here。然后只需将 .jar 添加到您的 Buildpath。
【讨论】:
如果您使用 maven 并将其添加为依赖项,那么它将为您下载它。否则
您可以从here 下载相应版本。并将其添加到您应用的类路径中
【讨论】:
不,当您导入包时,编译器不会从 Internet 下载包。 naming convention for packages 使它们看起来像 URL,但实际上不是,编译器当然不会尝试下载依赖项。
这个想法是,如果 Java 库的所有创建者都遵守此约定并在包名中使用他们的域名,则可以避免来自不同作者的库之间的类名冲突。然而,如前所述,这只是一个命名约定,与依赖管理有关。
像Maven 这样的一些构建工具具有复杂且相对易于使用的dependency management mechanisms. 流行的Ant 构建工具也通过Ivy dependency manager. 具有此功能
【讨论】: