1

我想将 Apache commons.io 用于 Eclipse 中的插件项目。我将 .jar 添加到构建路径:

(属性-> java 构建路径-> 库)

但是当我尝试测试我的项目时,我收到了这个错误:

org/apache/commons/io/FileUtils 的 NoClassDefFoundError。

我认为 Eclipse 不会复制该库,或者我想告诉项目复制该库。

我怎么解决这个问题?我正在尝试编写一个导出插件,其中一个完整的文件夹被复制到另一个文件夹。

4

3 回答 3

6

首先看看是否已经有提供这个库的 eclipse 插件。对于 apache commons,您会找到一个。使用插件编辑器并为所需的库添加依赖项,如果它们像 apache commons 一样常见;)

其他明智的添加目录将其称为“libs”并在那里添加你的罐子。然后将它们放在插件编辑器的类路径中。为此,请使用“运行时”选项卡并使用“类路径”部分中的添加按钮。

这将最终出现在这样的 build.properties 中

source.. = src/
output.. = bin/
bin.includes = META-INF/,\
               lib/commons-csv.jar,\
               lib/commons-lang-2.6.jar,\
               lib/commons-io-2.0.1.jar

以这种方式添加的库将被导出到您的插件中,并且它们将保留在您的类路径中。

您项目的类路径将自动更新。

对于像 DB-Driver 这样的重要库的最佳实践,将它们放在一个额外的插件项目中,这不会扩展 UI。像这样的插件只有一个 build.properties。然后你可以使用这个库插件作为其他插件的依赖。

于 2013-07-29T16:41:36.943 回答
0

你是对的,Eclipse 不会复制项目构建路径上的资源。你需要他们在你的classpath. 为了那个原因:

  • 手动将 jar 复制到您的应用程序可以持续访问它们的位置 ( brittle setup)

  • 或使用antmaven等构建工具。( recommended)

于 2013-07-29T16:39:41.760 回答
0

您听说过目标定义吗?
这正是您所需要的,并且您仍然可以将它与 Maven (Tycho) 一起使用...在开发插件时,您应该始终尝试管理 deps。通过目标定义,并且永远不要在你的类路径中添加 jars

于 2013-07-29T18:40:55.243 回答