Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何向Eclipse4RCP应用程序添加依赖项?_Java_Eclipse_Eclipse Plugin_Eclipse Rcp_E4 - Fatal编程技术网

Java 如何向Eclipse4RCP应用程序添加依赖项?

Java 如何向Eclipse4RCP应用程序添加依赖项?,java,eclipse,eclipse-plugin,eclipse-rcp,e4,Java,Eclipse,Eclipse Plugin,Eclipse Rcp,E4,我正在开发一个Eclipse4 RCP应用程序,希望使用Jersey REST客户端调用RESTful Web服务,但是当我将依赖项添加到插件MANIFEST.MF文件时,应用程序无法正确启动 我想添加的依赖项是javax.ws.rs,org.glassfish.jersey.core.jersey客户端和org.glassfish.jersey.media.jersey-media.json-jackson。这三个文件都已添加到从EclipseOrbit下载的目标定义文件(因此它们已经包含了必

我正在开发一个Eclipse4 RCP应用程序,希望使用Jersey REST客户端调用RESTful Web服务,但是当我将依赖项添加到插件
MANIFEST.MF
文件时,应用程序无法正确启动

我想添加的依赖项是
javax.ws.rs
org.glassfish.jersey.core.jersey客户端
org.glassfish.jersey.media.jersey-media.json-jackson
。这三个文件都已添加到从EclipseOrbit下载的目标定义文件(因此它们已经包含了必要的OSGI信息)和插件
MANIFEST.MF
文件中

该项目由两个插件模块、一个指定两个插件的功能模块、一个指定功能的产品模块和一个目标定义模块组成。第一个插件是
com.xxx.application
,是主应用程序。第二个插件是
com.xxx.demo
,它为主应用程序提供了一部分。这是我试图添加依赖项的第二个插件

当我试图通过产品文件启动应用程序时,返回以下错误消息

!ENTRY org.eclipse.e4.ui.workbench 4 0 2018-05-02 14:52:36.033
!MESSAGE Unable to retrieve the bundle from the URI: bundleclass://com.xxx.demo/com.xxx.demo.DemoPart
当三个依赖项中的任何一个被添加到
com.xxx.demo
插件的
MANIFEST.MF
文件时,问题似乎就出现了,如果我从
MANIFEST.MF
文件中删除依赖项,它就会正确启动。我还没有在调用web服务的插件中包含任何JAX-RS代码,所以我知道当我将依赖项添加到清单文件时会触发问题


在设置依赖项的过程中,我是否遗漏了阻止应用程序启动的内容,或者是否有更好的方法将依赖项添加到插件?

插件的MANIFEST.MF通常只需列出它直接依赖的其他插件


使用基于功能的.product文件时,产品中的feature.xml文件必须列出RCP中所需的每个插件。如果没有列出,就不会包括在内

如果您正在为产品使用功能构建,则每个插件都必须在其中一个功能中列出。如果它们不在其他文件中,请将它们添加到您的功能中。我刚刚尝试将
javax.ws.rs
依赖项添加到插件的
MANIFEST.MF
文件和
feature.xml
文件中,然后RCP应用程序启动。但是,如果我对
org.glassfish.jersey.core.jersey客户端执行相同的操作,那么我会再次收到相同的错误消息。依赖关系在Eclipse RCP中是可传递的,还是我需要将依赖关系层次结构中的所有内容都添加到功能中?经过一些进一步的实验,我已经设法通过添加
org.glassfish.jersey.core.jersey客户端的所有依赖关系来启动应用程序,并且
org.glassfish.jersey.media.jersey media json jackson
所以我猜依赖项是不可传递的。插件的MANIFEST.MF通常只需列出它直接依赖的其他插件。产品中的feature.xml文件必须列出RCP中所需的每个插件。谢谢-如果您想将您的评论作为答案发布,我很乐意将其标记为已接受。