2015-05-30 5 views
4

У меня есть приложение osgi (felix) javafx. При запуске я получаю:Ресурсы JavaFx (css) и OSGi

May 30, 2015 10:44:59 PM com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged 
WARNING: Resource "com/sun/javafx/scene/control/skin/modena/modena.css" not found. 
May 30, 2015 10:44:59 PM com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged 
WARNING: Resource "com/sun/javafx/scene/control/skin/modena/modena.css" not found. 

И мои этапы без правил CSS (и границ и т. Д.). Единственное решение, которое я нашел, это

Bundle systemBundle =FrameworkUtil.getBundle(MyApplication.class).getBundleContext().getBundle(0); 
URL url0=systemBundle.getResource("com/sun/javafx/scene/control/skin/modena/modena.css"); 
URL url1=systemBundle.getResource("com/sun/javafx/scene/control/skin/modena/modena-no-transparency.css"); 
scene.getStylesheets().add(url0.toString()); 
scene.getStylesheets().add(url1.toString()); 

Однако это плохое решение, и, кроме того, мне нужно сделать это для каждой стадии. Что является лучшим решением для решения этой проблемы?

+0

Попробуйте добавить com.sun.javafx.scene.control.skin.modena в пакет импорта вашего пакета. –

+0

@Arie van Wijngaarden Я могу «импортировать такой пакет, как компилятор говорит, что такой пакет не существует. Существует только пакет com.sun.javafx.scene.control.skin. –

+0

Я имею в виду: добавьте пакет, указанный в заголовок манифеста «Import-Package». Возможно, это не настоящий Java-пакет, содержащий Java-код, он, вероятно, содержит только ресурсы. –

ответ

1

Я нашел ответ. Необходимо было добавить пакеты для импорта в файл manifest.mf. Как я использую Maven это может быть сделано с помощью Maven-расслоением-плагин

<plugin> 
    <groupId>org.apache.felix</groupId> 
    <artifactId>maven-bundle-plugin</artifactId> 
    <version>2.3.7</version> 
    <extensions>true</extensions> 
    <configuration> 
     <instructions> 
     <Import-Package>com.sun.javafx.scene.control.skin.modena,*</Import-Package> 
     </instructions> 
    </configuration> 
</plugin> 

Наиболее важным является звездочка знак в конце. Это необходимо для того, чтобы добавить все автоматически обнаруженные пакеты, необходимые для этого пакета. Если мы опустим этот знак, нам придется добавлять все пакеты вручную.

Смежные вопросы