[英]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支持:
在这些问题的许多调试选项中,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.