簡體   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