Eclipse:如何确保插件中的jar优先于其他版本的jar?

时间:2009-01-20 11:17:17

标签: eclipse plugins classpath eclipse-3.4

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

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

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

TIA

3 个答案:

答案 0 :(得分:3)

您可能需要尝试ClassPath CheckerClassPath Helper

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

ClasPath Checker jar冲突:
classpath checker

Classpath Helper Blocked(Obscured)Classes视图:
classpath helper

答案 1 :(得分:0)

现在似乎工作了。对于那些感兴趣的人,这就是我必须要做的事情:

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

希望这对某人有用。

答案 2 :(得分:0)

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

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

OSGI's website不是开始OSGi之旅的最佳地点(这对OSGi规范和Peter Kriens博客有利)。最好从Neil Bartlett的在线book开始。