当前位置: 首页 > 知识库问答 >
问题:

基于Eclipse功能的启动:无法解决依赖关系

司寇光华
2023-03-14

我有一个依赖于一个包的OSGI包,它通过一个特性公开。我所依赖的包需要一个特定版本的包,比如< code > com . company . antlr . runtime(3 . 0 . 1)。该功能反过来会打包软件包的两个版本,< code > com . company . antlr . runtime(3 . 0 . 1)和< code > com . company . antlr . runtime(3 . 2 . 0)。

问题是,当我在Eclipse中使用我的捆绑包(在功能中)和包含我所依赖的软件包的功能进行基于功能的启动配置时,我会收到一个缺少的约束验证错误,指出缺少所需的捆绑包com.company.antlr.runtime(3.0.1)。

将< code > com . company . antlr . runtime(3 . 0 . 1)作为捆绑包添加到功能启动中没有任何效果,我仍然得到相同的验证错误。

另一方面,如果我制作基于捆绑包的启动配置,包括与功能中打包的捆绑包完全相同的捆绑包,则没有验证问题。

这个问题可以用这个最小的例子来说明:

bundle org.example.examplebundle 具有以下清单:

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name:Examplebundle 
Bundle-SymbolicName: org.example.examplebundle 
Bundle-Version:1.0.0.qualifier 
Bundle-RequiredExecutionEnvironment: JavaSE-1.7 
Require-Bundle: com.company.antlr.runtime;bundle-version="[3.0.1,3.0.1]"

和功能<代码> org.example.examplefeature < /

<feature
      id="org.example.examplefeature"
      label="Examplefeature"
      version="1.0.0.qualifier">

   <plugin
         id="org.eclipse.osgi"
         download-size="0"
         install-size="0"
         version="0.0.0"
         unpack="false"/>

   <plugin
         id="org.example.examplebundle"
         download-size="0"
         install-size="0"
         version="0.0.0"
         unpack="false"/>

   <plugin
         id="com.company.antlr.runtime"
         download-size="0"
         install-size="0"
         version="3.0.1"
         unpack="false"/>

   <plugin
         id="com.company.antlr.runtime"
         download-size="0"
         install-size="0"
         version="3.2.0"
         unpack="false"/>

</feature>

仅使用此功能进行基于功能的启动将导致验证错误。使用功能中包含的四个捆绑包进行基于捆绑包的启动不会出现验证错误。

然后我尝试添加所需的包使用

如果我将相同的必要捆绑包添加到基于捆绑包的启动中,我可以观察到 com.company.antlr.runtime (3.0.1)com.company.antlr.runtime (3.2.0) 都处于活动状态。

我想基于th的解析器

考虑到这一假设,我试图在功能中明确说明。xml,我需要与<code>com.company.antlr完美匹配。运行时(3.0.1),方法是在feature.xml中包含以下代码段:

  <requires>
    <import 
      plugin="com.company.antlr.runtime"
      version="3.0.1"
      match="perfect"
      />
   </requires>

但是,唉,无济于事。

所以,我现在的问题是:有什么方法可以在保持基于特性的发布的同时解决这个问题?

为了完整起见:我运行的是Eclipse Kepler 4.3和OSGI 3.8.1

共有1个答案

施刚毅
2023-03-14

在使用基于包的启动器时,您似乎将两个包的自动启动设置为true。在使用基于功能的启动器时,您不能这样做,除非您已将“默认自动启动”设置为true或创建产品定义并为这些捆绑包设置启动级别。

 类似资料:
  • 我在Eclipse4.18中遇到了一个奇怪的问题,我希望有人能帮我解决这个问题。我的项目是一个jetty webapp,它通过FTP与外部服务器进行通信。我正在使用mockftpserver(https://mockftpserver.org/)帮助对需要与FTP服务器通信的代码进行单元测试。 我在pom中将库依赖项定义为 然后我在测试类中定义了一个导入,比如 没有什么太奇怪的事情发生,maven

  • build.gradle.kts文件如下所示: 错误消息如下: 分级版本是: 时髦的dsl似乎工作正常。任何帮助都将不胜感激。

  • 当我尝试添加新项目并修改我的gradle(添加依赖项)时,我在同步gradle后收到了这条消息: 无法解析“”的依赖项:app@debugAndroidTest/compileClasspath“:无法下载kotlin-stdlib-1.4.31.jar(org.jetbrains.kotlin:kotlin stdlib:1.4.31) 显示详细信息 受影响的模块:应用程序 我无法单击“显示详细

  • 很高兴有一个更新的Android Studio 3.0。但是我在Android Studio 3.0中遇到了一个问题,我刚刚在Android Studio 3.0中创建了一个新项目。然后我犯了一些错误 我通过将依赖项更改为最新版本并解决问题来解决这些问题。 但是,当我添加了facebook帐户工具包sdk的依赖项时。脸谱网。android:帐户工具包sdk:4 我收到以下错误-: 错误:无法解析“

  • 詹金斯1.500版有问题。我正在尝试建立一个依赖于我的另一个项目的项目。错误是:

  • 我对ivy没有解析我的一些依赖关系有问题。以下是我如何重现这个问题的: 我在eclipse中有一个空的java项目。我已经在我的项目中添加了ivy.xml: 这工作正常,ivy能够解决和下载口水。 如果我将修订版更改为6.3.0.Final(http://mvnrepository.com/artifact/org.drools/drools-core/6.3.0.Final),它将不起作用,我看