我可以更新一个Eclipse插件项目吗,它只是一个jar的包装器?

我可以更新一个Eclipse插件项目吗,它只是一个jar的包装器?,eclipse,plugins,jar,Eclipse,Plugins,Jar,您好, 我有一个java项目,我将其导出为jar。这个java项目也使用JNI。 到目前为止,我能找到的在Eclipse插件中使用这个jar的唯一方法是将它包装到另一个Eclipse插件项目中,并将这个jar包装器插件添加到我实际插件的依赖项中。 我已经与Eclipse的路径和依赖项设置搏斗了好几天,这个方法是目前唯一适合我的方法。 但是,这并不实用,因为当我更改基于JNI的java代码时,我可以简单地创建一个新的jar,但是要将该jar连接到我的实际插件,我每次都必须重新创建jar包装器插件。

您好, 我有一个java项目,我将其导出为jar。这个java项目也使用JNI。 到目前为止,我能找到的在Eclipse插件中使用这个jar的唯一方法是将它包装到另一个Eclipse插件项目中,并将这个jar包装器插件添加到我实际插件的依赖项中。 我已经与Eclipse的路径和依赖项设置搏斗了好几天,这个方法是目前唯一适合我的方法。 但是,这并不实用,因为当我更改基于JNI的java代码时,我可以简单地创建一个新的jar,但是要将该jar连接到我的实际插件,我每次都必须重新创建jar包装器插件。 也就是说,我删除了jar包装器插件项目,将所有内容都放在磁盘上,然后用相同的名称重新创建它,指向更新后的jar。我还必须从实际的插件项目中删除对这个项目的引用,然后再添加一次(也许这最近变得更聪明了,但我没有测试它)

这很耗时,而且我也不能将这个包装器插件项目添加到svn,因为它每次都是从头开始创建的

如果我可以简单地通过指向jar的新版本来更新一个jar包装的eclipse插件项目,这将解决我的问题,并且我可以在每次更新之后将该项目提交给svn

有没有什么方法可以帮助我顺利完成这个过程

致意 Seref

仅Equinox(即非标准OSGi)方法在OSGi捆绑包中使用外部库而不进行物理包装,这种方法是通过引用进行捆绑:您仍然需要一个包装插件,但它不包含包装库本身,而是包清单的
包类路径
头中的一个引用,语法如下:

Bundle-Classpath: external:/path/to/your/lib.jar
在开发期间,这非常方便,并且节省了在更新包装库时重新创建包装插件的工作量。在部署期间,您必须将库与产品一起安装,或者使用传统的包装器插件(包含实际库的插件)。您也可以对bith用例使用相同的包装器插件,但根据您是要使用包装的库还是外部库,将
Bundle Classpath
external:/stuff/lib.jar
更改为
libs/lib.jar


(大部分内容来自于《OSGi和Equinox——创建高度模块化的Java系统》一书,我并不喜欢这本书,但它包含了Equinox(Eclipse的OSGi实现)和PDE构建系统的有用内容。)

为什么每次都要重新创建包装器项目?在Eclipse中,有一个特定类型的插件项目,它基本上提取一个jar并将其包装为插件。这是JNI代码工作的唯一方式,因为本机dll被正确提取,然后由Eclipse运行时找到。因此,每当本机dll或jni代码发生更改时,必须重复此过程。如果它与jni一起工作(这在路径等方面是一场噩梦),这将是一个很好的开发时间解决方案。由于我没有这本书,我可以问一下包类路径值是否可以用于引用eclipse中的相对路径吗?外部:。。。需要配置eclipse外路径。它与环境变量一起工作,因此在开发过程中,您可以定义一个指向工作区的环境变量(我们称之为$EXTERNAL_DEPS),并在Bundle类路径中使用EXTERNAL:$EXTERNAL_DEPS/some_project/libs/lib.jar。另一方面,如果您需要提取本机库或将捆绑包部署为目录而不是JAR,我不确定您从我的建议中获得了多少好处。我不知道Bundle NativeCode是否允许使用Bundle类路径进行外部操作。