繁体   English   中英

swing应用程序和osgi felix

[英]swing application and osgi felix

我创建了一个非常简单的捆绑包:

public class Main implements BundleActivator, ServiceListener{

public void start(BundleContext bc) throws Exception {

    bc.addServiceListener(this);

    //trivial system out
    System.out.println("started");

    //output to file
    FileWriter fw = new FileWriter("test.txt");
    fw.write("it has worked");
    fw.close();

    //opening of a frame
    JFrame f = new JFrame();
    JLabel l = new JLabel("test");
    f.add(l);
    f.setVisible(true);
    f.pack();

}

(other methods with empty body)

我已经编辑了清单文件:

Bundle-Name: Service listener example
Bundle-Description: A bundle that displays messages at startup and whe service events occur
Bundle-Vendor: Apache Felix
Bundle-Version: 1.0.0
Bundle-Activator: tosgi01.Main
Import-Package: org.osgi.framework

我已经整理了所有这些东西,启动了felix,然后:start file:testosgi.jar

它不会出错,但也不起作用。 有没有办法获取正在发生的事情的详细信息?

我不确定100%,但是我认为您必须在清单中指定Bundle-SymbolicName。 您还必须导入javax.swing包(等)。 这些软件包默认情况下不可用。

我们的应用程序的控制台中有很多输出,因此忽略了一条消息。 对我而言,通常有助停止和开始他所讨论的问题。

您还应该尝试控制台/外壳,它提供了诊断捆绑包问题的工具。

我无法直接为您提供帮助,但是如果您错过了它:NetBeans平台(基于SWing的RCP)附带OSGi和Apache Felix支持:

http://wiki.netbeans.org/OSGiAndNetBeans

在这些问题的许多调试选项中,Felix Web控制台[1]是我的最爱。

检查您的软件包是否处于活动状态,如果没有查看控制台软件包详细信息页面上的错误消息。 如果您对Swing的东西有疑问,也可以先将其删除,然后从检查是否确实调用了bundle激活器开始。

[1] http://felix.apache.org/site/apache-felix-web-console.html

首先,您错过了清单中的“ Bundle-SymbolicName”标记,这是必需的。

其次,Felix有一个名为Gogo的控制台捆绑包,它可以帮助您了解捆绑包是否启动。 只需安装此捆绑包并写入控制台即可

lb

并且您将获得已安装捆绑包的列表。 找到你的捆绑包,如果它有“活跃”状态,一切都很好。 如果没有,请写信

start <your_bundle_number>

并看到日志。

如果没有帮助,请在文件conf / config.properties中找到felix.log.level=1并将其更改为felix.log.level=4 您将在日志中看到启动bundle的整个过程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM