3

我正在开发一个包含特定版本的 Lucene 的 Eclipse 插件。我需要生成一个搜索索引并部署它,以便另一个使用相同版本的 Lucene 的应用程序可以读取它。

我最近将 eclipse 升级到 3.4,现在第二个应用程序无法读取搜索索引。我看到 eclipse 3.4 包含更新版本的 Lucene,我假设在生成索引时使用了这个版本。

如何确定在生成索引时使用的是哪个版本的 Lucene?我的插件类路径从我的 Lucene 捆绑版本开始,所以我希望我的版本应该优先。

TIA

4

3 回答 3

3

您可能想试试ClassPath CheckerClassPath Helper 。

您可以通过这种方式准确确定您的开发环境中使用了哪些 jar,以便将这些 jar 与部署环境中存在的 jar 进行比较,其中 Luce 生成索引。

ClasPath Checker jar 冲突:
类路径检查器

Classpath Helper Blocked (Obscured) Classes 视图:
类路径助手

于 2009-01-20T12:01:51.563 回答
0

似乎现在可以工作了。对于那些有兴趣的人,这是我必须做的:

  • 从我的插件中删除了 Lucene 1.4.3 jar
  • 将旧版 Eclipse 中的旧 Lucene 插件复制到 3.4 版中。
  • 删除了 plugin.xml 向导中的所有依赖项。现在所有的 Lucene 插件都是可见的。
  • 选择版本 1.4.xx 并更改属性以将最大版本设置为 1.5
  • 添加了其他插件依赖项
  • 更改构建路径:删除旧 jar,添加插件依赖 Lucene 1.4.3
  • 重新计算的运行配置。Lucene 1.4.3 插件不是自动添加的,所以是手动添加的。
  • 现在生成索引时,会加载 1.4.3 版本。

希望这对某人有用。

于 2009-01-22T12:59:44.660 回答
0

由于您正在开发一个 Eclipse 插件,您应该研究一下 OSGi。Eclipse 插件是 OSGi 包的实例,OSGi 有一个强大的模型来处理包之间的依赖关系和版本控制。

我不知道你的具体代码,但如果打算在我的插件中使用 Lucene,我会使用 OSGi 的“Import-Package”或“Require-Bundle”功能来表达依赖关系;我不会在我的插件中包含 Lucene JAR。如果每个插件都包含自己的 Lucene JAR,那么您会浪费空间,但更重要的是,最终会得到不兼容的版本(就像您拥有的那样)。

OSGI 的网站不是开始您的 OSGi 之旅的最佳地点(它对 OSGi 规范和 Peter Kriens 的博客很有帮助)。最好从 Neil Bartlett 的在线书籍之类的东西开始。

于 2009-01-27T11:50:33.417 回答