为什么Java编译器不下载导入的包?

时间:2011-02-23 12:33:57

标签: java package javac

我正在尝试在本地计算机上运行Lucene Java应用程序。我得到了这个编译错误:

package org.apache.commons.digester does not exist

因为

import org.apache.commons.digester.Digester;

编译器是不是从Internet上下载了包? 如果没有,我该怎么办?

4 个答案:

答案 0 :(得分:4)

不,编译器不会从Internet下载软件包。如果正确配置它们并将包添加到项目依赖项中,某些构建管理工具(如Maven)会执行此操作。但是如果没有这样的工具,你应该手动下载jar并将它放在编译器类路径上。

答案 1 :(得分:1)

如果您使用Maven,可以通过添加以下依赖项来下载lib:

<dependency>
<groupId>commons-digester</groupId>
<artifactId>commons-digester</artifactId>
<version>2.1</version>

否则你必须下载here。然后只需将.jar添加到Buildpath中。

答案 2 :(得分:0)

如果您正在使用 maven 并将其添加为依赖项,那么它将为您下载它。否则

您可以从适当版本的here下载。并将其添加到您应用的课程路径

答案 3 :(得分:0)

导入时,编译器不会从Internet下载软件包。 naming convention for packages使它们看起来像URL,但它们不是,编译器当然不会尝试下载依赖项。

这个想法是,如果Java库的所有创建者都符合此约定并在包名称中使用其域名,则可以避免来自不同作者的库之间的类名冲突。但是,如前所述,这只是一个命名约定,并且与依赖关系管理有关。

某些构建工具(如Maven)具有复杂且易于使用的dependency management mechanisms.流行的Ant构建工具也具有此功能Ivy dependency manager.