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

Weld OSGi Apache Felix = 找不到软件包

班思源
2023-03-14

对于Java SE应用程序,我使用Apache Felix和weld-osgi。问题是在注入的bean中,我使用了包< code > javax . enterprise . context . ApplicationScoped 中的< code>@ApplicationScoped。但是在< code > weld-OSGi-bundle-2 . 1 . 2 . final 中没有这个包。

此包存在于<code>weld se

共有1个答案

洪光霁
2023-03-14

我会尝试将以下依赖项作为单独的捆绑包运行:

<dependency>
    <groupId>javax.enterprise</groupId>
    <artifactId>cdi-api</artifactId>
    <version>1.1-20130918</version>
</dependency>

(Maven Central链接)

请注意,您需要版本<code>1.1-20130918。版本1.1在MANIFEST.MF中没有OSGi头。您可以解压缩<code>jar文件,如<code>Bundle ManifestVersion。您还可以在此处检查该捆绑包所需的包,它位于<code>导入包

检查Maven Central(或其< code>pom.xml)上的< code>weld-osgi-bundle的依赖项。它包含以下内容:

<dependency>
    <groupId>org.jboss.weld</groupId>
    <artifactId>weld-api</artifactId>
</dependency>

此weld-api指的是上面的< code>cdi-api,其中包含缺少的注释:

<dependency>
    <groupId>javax.enterprise</groupId>
    <artifactId>cdi-api</artifactId>
</dependency>

另一种方法是在Eclipse中按F3(打开声明),同时光标在Application Scoped注释中,然后在Project Explorer视图中启用Link with Editor,它将显示ApplicationScoped.classcdi-api-1.1.jar内。

您可能需要比这个更多的捆绑软件(传递依赖项,或者只是第一个停止安装的捆绑软件)。并非所有知名的jar都有OSGi标头,如下所示:

<dependency>
    <groupId>javax.inject</groupId>
    <artifactId>javax.inject</artifactId>
    <version>1</version>
</dependency>

在这种情况下,在Maven Central上搜索组id。包含<code>javax的两个结果。注入包并具有OSGi头:

  • org.glassfish.hk2.external
  • org.apache.servicemix.bundles

如果找不到任何东西,您可以手动将任何jar转换为OSGi包。实际上,您可以使用weld-se.jar来做到这一点,但是单独安装依赖项看起来更干净。

 类似资料:
  • 问题内容: 我使用Google Cloud SQL和MySQL服务器开发了一些GO库。当我导入`appengine / cloudsql时,发生以下错误。 我知道这个套件仅适用于Google App Engine,并不存在于其他任何地方。 我想知道如何在单个库中将其用于GAE和其他环境的标准sql库。 PS:我可以正确设置Google App Engine SDK。我的问题与此无关。希望我的库可以

  • 问题内容: 我刚刚通过MacPorts安装了py27-numpy软件包,当我使用以下命令时,python将找不到该模块: 我使用了该命令,scipy端口没有出现。 显然,该路径配置不正确,或者MacPorts没有安装在正确的位置,但是无论哪种方式,知道此软件包的安装位置都可以解决我的问题。 在哪里可以找到MacPorts安装的软件包py27-scipy的路径? 命令输出: /Library/Fra

  • 问题内容: 我刚刚切换到Ubuntu,并且已经安装了IntelliJ IDEA 14 Community Edition。导入现有项目时,我发现IntelliJ似乎找不到任何LibGDX依赖项。我事先安装了Gradle。我已经尝试过将IntelliJ项目随附的Gradle包装器用于并说,但这似乎并没有做什么用。我的外部TweenEngine程序包已经很好地加载了。似乎只有IntelliJ遇到问题的

  • 问题内容: 所以我刚刚安装了Ubuntu,这是我第一次在Linux环境中工作,所以请耐心等待。 无论如何,我直接从Oracle下载了Java 8 JDK,但我知道也有一个适用于Java 8的OpenJDK。我有两个问题。 Oracle版本和OpenJDK有什么区别。优点缺点? 当我尝试获取OpenJDK 8时,我做不到。我正在粘贴终端命令和到达此处的错误消息,以寻求建议。再说一次,对于Linux来

  • 问题内容: 当我尝试使用安装npm时,出现以下错误: E:无法找到软件包npm 为什么找不到npm?我正在使用Debian 9并且已经运行了 问题答案: 从官方的Node.js文档中: Node.js软件包在Debian Sid(不稳定),Jessie(测试)和Wheezy(wheezy-backports)的官方存储库中也以“ nodejs”的形式提供。 它仅安装nodejs二进制文件。 因此,

  • 问题内容: 我是蟒蛇版本的Anaconda的新手,已经遇到了不愉快的问题。 我按照此处的说明安装了Anaconda ,它的工作原理很吸引人,并在需要时正确导入了所有包含的软件包。然后,我继续安装一些额外的软件包,而Anaconda首先并未包含这些软件包: 安装似乎是完美的,但是当我尝试将其导入ipython时,事情变得令人沮丧: 有趣的是,删除后,如果我不运行蟒蛇蟒蛇包,可以很好地导入这些软件包