Eclipse插件项目中的库

时间:2013-07-29 16:33:27

标签: java eclipse eclipse-plugin apache-commons-io

我想在Eclipse中使用Apache commons.io作为插件项目。 我将.jar添加到了构建路径中:

  

(properties-> java build path-> Libraries)

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

  

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

我认为Eclipse不会复制库或我想念项目复制该库。

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

3 个答案:

答案 0 :(得分: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。 然后你可以使用这个库插件作为其他插件的依赖。

答案 1 :(得分:0)

你是对的,Eclipse不会复制项目构建路径上的资源。您需要classpath上的这些内容。为此:

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

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

答案 2 :(得分:0)

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