JavaFX 2.2 generated image not shown after building jar-file

ぐ巨炮叔叔 提交于 2019-12-11 15:47:21

问题


In my JavaFX Application I generate a barcode with barcode4j by Apache, save it as png image in the directory /data/images/ and embed it in a web page which is shown on a JavaFX WebView.

After generating the barcode I embend it into the webpage using the following Javascript-Code:

path = "file:/" + path.replace(/\\/gi,"/");
var barcodeElement = document.getElementById("productBarcode");
barcodeElement.setAttribute("src", path );
barcodeElement.style.display = "inline-block";

I use the absolute path C:\path\to\java-program\data\myimage.png and build a file-URL from it. Using this in Eclipse works without any problems. But when I build my project and start it from my jar-file the image is not shown. But the problem is not, that the path is incorrect or that generating the picture does not work, so that there is some kind of "not found" error. The place where the image should be is just white with a light border around.

And now the strangest part: If you right click on the image and choose "open in new window" the image is shown!

Does someone has an idea about that?

Thank you very much in advance!


回答1:


My understanding is that the WebView won't let a page loaded with one protocol access files using another one. This makes perfect sense when you load through http://, and forbid file://. Here, you're loading through jar:file:..., and the webview will only let you access jar:file:... resources (I just tried, I can access an image from another jar file, from the same jar file, but not from outside!).

This sounds very much like a bug to me.

One workaround mentioned here is to use "data:" URI (i.e. encode the image directly in the HTML file).



来源:https://stackoverflow.com/questions/17993971/javafx-2-2-generated-image-not-shown-after-building-jar-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!