свинг аппликация и осги феликс - PullRequest
1 голос
/ 20 октября 2011

Я создал очень простой пакет:

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

Я собрал все эти вещи, запустил Феликс и: стартовый файл: testosgi.jar

Не выдает ошибку, но тоже не работает. Есть ли способ получить подробную информацию о том, что происходит?

Ответы [ 4 ]

2 голосов
/ 21 октября 2011

Я не уверен на 100%, но я думаю, что вы должны указать Bundle-SymbolicName в вашем манифесте.Вы также должны импортировать пакет javax.swing (и т. Д.).Эти пакеты по умолчанию недоступны.

У нас в приложении много выходных данных, поэтому мы можем пропустить сообщение.Для меня это часто помогает остановиться и начать, он связывает вопрос.

Вам также следует попробовать консоль / оболочку, так как она предлагает инструменты для диагностики проблем с пакетами.

1 голос
/ 20 октября 2011

Я не могу вам напрямую помочь, но в случае, если вы пропустили это: платформа NetBeans (RCP на основе Swing) поставляется с поддержкой OSGi и Apache Felix:

http://wiki.netbeans.org/OSGiAndNetBeans

0 голосов
/ 16 ноября 2011

Прежде всего, вы пропустили тег «Bundle-SymbolicName» в своем манифесте, который является обязательным.

Во-вторых, у Феликса есть консольный пакет под названием Gogo , который может помочь вампонять, началась ваша связка или нет.Просто установите этот пакет и запишите в консоль

lb

, и вы увидите список установленных пакетов.Найдите свой пакет и, если он имеет «активное» состояние, все в порядке.Если нет, напишите

start <your_bundle_number>

и посмотрите журнал.

Если это не поможет, найдите в файле conf / config.properties строку felix.log.level=1 иизмените его на felix.log.level=4.В журнале вы увидите весь процесс запуска комплектации.

0 голосов
/ 21 октября 2011

Из многих вариантов отладки для таких проблем веб-консоль Felix [1] является моей любимой.

Проверьте, активен ли ваш пакет, и если нет, посмотрите сообщения об ошибках в сведениях о пакете консоли.стр.Если у вас есть сомнения по поводу Swing, вы также можете сначала удалить его и начать с проверки того, что ваш активатор пакета действительно называется.

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

...