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

Gradle:从OSGI依赖项的MANIFEST.MF正确构建类路径

胡鸿远
2023-03-14

我的gradle项目(“osgiapp”)依赖于一个OSGI项目(“osgidep”),该项目具有以下MANIFEST.MF条目:

Manifest-Version: 1.0
Export-Package: test.lib,test.osgidep
Bundle-ClassPath: lib/lib.jar,.
Bundle-Name: osgidep
Bundle-Version: 1.0
Bundle-SymbolicName: osgidep

这里导出了两个包:

  • test.lib包由osgidep.jar中包含的lib/lib.jar提供
  • test.osgidep包由osgidep.jar本身提供

现在,我的建筑。Gradle看起来是这样的:

apply plugin: 'java'
apply plugin: 'osgi'

repositories {
    flatDir {
         dirs "../osgidep"
    }
}

dependencies {
    compile ":osgidep:"
}

当我试图构建使用两个导出包的代码时:

package test.osgi;

import test.lib.Lib;
import test.osgidep.OsgiDep;

public class Test
{
    Lib lib = new Lib();
    OsgiDep dep = new OsgiDep();
}

共有1个答案

颛孙玉石
2023-03-14

您的问题是编译osgiapp所需的一些类型“隐藏”在osgidep的Bundle-Classpath中。javac对bundle-classpath一无所知。您需要在某个地方提取lib.jar,以便将其添加到osgiapp的编译依赖项中。如果需要将包用作编译依赖项,则嵌入式JAR(如lib.jar)就会出现问题。

 类似资料:
  • 我面临的第一个问题是提供的依赖关系,该依赖关系总是作为运行时写入pom.xml。 第二个问题是动态版本,我使用它来进行较小的版本更改。Maven和Gradle有不同的符号,maven-publish只是将Gradle的符号写入pom.xml 下面是我的例子:

  • 在命令行中,我需要构建一个没有依赖项的可执行jar。当前的“gradle build”命令给了我一个带有依赖项的jar。 在StackOverflow上找不到这个。如果是重复的问题,指给我看。谢谢。

  • 我一直在使用gradle作为Springboot,它过去很好,但gradle的构建突然停止了工作。我不断收到错误,说找不到依赖项 这是分级代码: 我得到的错误是: 无法解析组织。springframework。启动:spring启动依赖项:2.4。1.无法解析io。关键的。Spring云:spring云服务依赖项:2.4。1.无法解析组织。springframework。云:spring云依赖项:

  • 我有一个多项目的构建设置与gradle将包含多个android应用程序和库。 我想应用某些分级插件只对一些子项目。(比如android gradle插件只到android子项目)因此我在和插件声明中添加了类路径依赖项到两个android子项目: 和 。问题是gradle找不到android gradle插件: 错误:(%1,%1)评估项目“:ShopPr:Presentation”时出现问题。找不

  • 几天来,我一直在尝试使用nativescript。我的所有安装都进行得很好,但在执行tns运行的android——emulator时,它给了我以下错误: MiC@USERMINGW32 ~/Android项目/HelloWorld$tns运行Android搜索设备。。。跳过准备。正在生成项目。。。Gradle构建。。。 失败:生成失败,出现异常。 > 问题:配置根项目“HelloWorld”时出现