【问题标题】:Libraries in Eclipse plugin ProjectEclipse 插件项目中的库
【发布时间】:2013-07-29 16:33:27
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 您需要将文件添加到类路径而不是构建路径。最好还是使用 Maven 为您管理依赖项。

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


【解决方案1】:

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

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

这最终会出现在这样的 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。 然后你可以使用这个库插件作为其他插件的依赖。

【讨论】:

    【解决方案2】:

    你是对的,Eclipse 不会复制项目构建路径上的资源。您需要在您的classpath 上联系他们。为此:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • hm,所以有了这个目标定义,我可以添加这个 Jar 文件,对吗?我只想要简单有效的东西,没有什么花哨的。
      • 目标定义并不花哨。他们是正确的方法。而且你不能在目标上有 jar 文件,你需要将 jar 转换成包,使用任何工具,如 bnd,甚至 Eclipse 本身t
      猜你喜欢
      • 1970-01-01
      • 2011-02-22
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多