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

无法以编程方式启动/停止osgi捆绑包......

欧阳英彦
2023-03-14

符号名ram

线程“main”组织中出现异常。奥斯基。框架BundleException:bundle ram[1]中未解析的约束:无法解析1.0:缺少需求[1.0]osgi。装电线。包裹(osgi.willing.package=android.dalvik)。阿帕奇。菲利克斯。框架菲利克斯。resolveBundleRevision(Felix.java:3826)位于org。阿帕奇。菲利克斯。框架菲利克斯。startBundle(Felix.java:1868)位于org。阿帕奇。菲利克斯。框架BundleImpl。在org上启动(BundleImpl.java:944)。阿帕奇。菲利克斯。框架BundleImpl。从test9开始(BundleImpl.java:931)。Shulkam_演示。main(Shulkam_Demo.java:35)

我的密码是。。

import java.util.HashMap;
import java.util.Map;
import java.util.ServiceLoader;

import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.launch.Framework;
import org.osgi.framework.launch.FrameworkFactory;

public class Shulkam_Demo {

public static void main(String[] args) throws Exception{
    // TODO Auto-generated method stub

    FrameworkFactory frameworkFactory =    ServiceLoader.load(FrameworkFactory.class).iterator().next();
    Map<String, String> config = new HashMap<String, String>();
    //TODO: add some config properties
    Framework framework = frameworkFactory.newFramework(config);
    framework.start();
    //System.out.println(framework.getSymbolicName());

    //framework.start();

   //System.out.println( "bundle id" +framework.getBundleId());
    BundleContext bc = framework.getBundleContext();

    Bundle b = bc.installBundle("file:C:\\Documents and Settings\\Rishika Inc   Lab\\Desktop\\delete12\\shulkam_accounts-0.0.1-SNAPSHOT.jar");

    System.out.println("symbolic name "+b.getSymbolicName());
    b.start();
    System.out.println("frame work started");

    framework.waitForStop(0);

    System.out.println("shut dow");

}  

build.xml是

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>shulkam_accounts</groupId>
<artifactId>shulkam_accounts</artifactId>
<packaging>bundle</packaging>

<version>0.0.1-SNAPSHOT</version>
<properties>

<springdm.version>1.1.2</springdm.version>
</properties>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
  <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
      <source>1.6</source>
      <target>1.6</target>
    </configuration>
  </plugin>
  <plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>2.4.0</version>
    <extensions>true</extensions>
    <configuration>

    <instructions>
    <Export-Package>*</Export-Package>
    <Embed-Dependency>*</Embed-Dependency>
    <Embed-Transitive>true</Embed-Transitive>
    <Bundle-SymbolicName>ram</Bundle-SymbolicName>
    <Import-package>
    com.mysql.jdbc;version="5.1.15",
 org.osgi.framework;version="1.3.0",
!osgi.wiring.package,
!android.dalvik



 </Import-package>
<Bundle-Activator>shulkam_accounts.MyActivator</Bundle-Activator>


    </instructions>
    </configuration>
  </plugin>
  </plugins>
 </build>
 <dependencies>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.15</version>
</dependency>
<!-- Spring DM -->


    <dependency>
      <groupId>org.springframework.osgi</groupId>
      <artifactId>spring-osgi-io</artifactId>
      <version>${springdm.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.osgi</groupId>
      <artifactId>spring-osgi-core</artifactId>
      <version>${springdm.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.osgi</groupId>
      <artifactId>spring-osgi-extender</artifactId>
      <version>${springdm.version}</version>
      <scope>provided</scope>
    </dependency>

  <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.framework</artifactId>
        <version>4.0.2</version>
         <scope>provided</scope>
    </dependency>
    <dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>


</dependencies>
</project>

任何有价值的帮助...

共有2个答案

轩辕翰
2023-03-14

您有缺少依赖项的问题:

missing requirement [1.0] osgi.wiring.package (osgi.wiring.package=android.dalvik)

并且您已指定不希望将其包含在导入包中:

<Import-package>
com.mysql.jdbc;version="5.1.15",
org.osgi.framework;version="1.3.0",
!osgi.wiring.package,
!android.dalvik

要得到它,你应该把它放在你的进口包装中。

鲍俊杰
2023-03-14

我认为

<Export-Package>*</Export-Package>

是原因。用

<Export-Package></Export-Package> 

除非你真的出口什么东西。

 类似资料:
  • 问题内容: 在我的AEM项目的代码中看似无关紧要的更改之后,我的捆绑软件无法解决。检查日志后,我可以看到出现以下错误。 该项目在本地编译得很好,并且只有在容器尝试解决该捆绑包后,该问题才会出现。 我没有在任何更改中添加任何显式依赖项。项目对象模型与以前相同。顾名思义,这是一个核心Java软件包,因此我希望它会被System软件包公开。 我正在运行AEM支持的JDK 7,所以不要指望它与JVM兼容性

  • 上下文 我有一个基于OSGi的大型(Equinox3.9/EclipseRCP4.4)应用程序,还有几个“可选”包。这些可选捆绑包中的每一个都提供了可选的用户界面和一些额外的服务(通过SCR组件),这些服务只适用于我们的一部分客户。 应用程序始终作为预打包安装分发(也就是说,我们不使用P2或任何其他自动配置机制)。直到最近,我们为每个需要一些可选捆绑包的客户构建了不同的预打包安装。可选捆绑包的数量

  • 我们使用Karaf-4作为OSGI容器。我们有几个与一个功能关联的捆绑包。当某个功能中的任何捆绑包失败时,我们希望以编程方式进行识别。我们尝试了 BundleTracker 和 BundleListener,但是当捆绑包在“GracePeriod”状态下等待失败时,我们不会收到通知。 我们可以在karaf控制台中使用“list”命令查看故障包的状态。我们希望通过通知以编程方式实现这一点,而不是在k

  • 问题内容: 我正在开发一个Twitter应用程序,该应用程序直接从Twitter引用图像。如何防止动画gif播放? 在页面末尾使用不适用于Firefox。 是否有更好的JavaScript技巧?最好对所有浏览器都适用 问题答案: 这不是跨浏览器的解决方案,但是可以在Firefox和Opera中使用(不适用于ie8:-/)。采取从这里

  • 我试图启动一个OSGI REST包.我把下面的导入包: 当我运行捆绑包时,我得到以下错误:osgi.wiring.package;过滤器:="(

  • null 我很感激任何建议/帮助。