からCSSファイルをインポートする方法:私は<strong>cssBundle</strong>と呼ばれる別のバンドルからOSGiバンドルのリソース<em>(style.cssと呼ばれるCSSファイル)</em>をインポートしようとしている外部のバンドルリソース
public void addCSS() {
Bundle bundle = FrameworkUtil.getBundle(this.getClass());
Bundle[] bArray = bundle.getBundleContext().getBundles();
Bundle cssBundle = null;
for (Bundle b : bArray) {
if (b.getSymbolicName().equals("cssBundle")) {
cssBundle = b;
break;
}
}
Enumeration<URL> resources = null;
try {
resources = cssBundle.getResources("/resources/css/mainscreen.css");
} catch (IOException e) {
e.printStackTrace();
}
if (resources != null) {
URL myCSSURL = resources.nextElement();
try {
URI uri = myCSSURL.toURI();
File f = new File(uri);
scene.getStylesheets().add("file:///" + f.getAbsolutePath().replace("\\", "/"));
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
}
しかし、このようにして、私は得る:
Exception in thread "JavaFX Application Thread" java.lang.IllegalArgumentException: URI scheme is not "file"
at java.io.File.<init>(Unknown Source)
それについては、どのような正しい方法がありますか?
System.out.println(myCSSURL);
OUTPUTS
bundle://13.1:1/resources/css/style.css
私はURLを使用せずに自分のシーンにこれを追加することができます方法はありますか?
私はOSGIで作業していませんが、 'scene.getStylesheets()。add(uri.toString());'を実行しない理由がありますか? (またはおそらく 'uri.toURL()。toExternalForm()') 'stylesheets'プロパティは、URLの文字列表現のリストです。 –
@James_D別のバンドルリソースからCSSリソースファイルをインポートしています。 –
私は本当にそれが重要であるとは思わない。あなたが 'uri.toString()'を呼び出すと実際に何を得ますか?これはおそらくjarファイルのエントリであり、URIはとにかくjarファイルを示します。 –