java.io.FileNotFoundException when image file is inside jar using jxl.write.WritableImage

丶灬走出姿态 提交于 2020-02-02 12:57:25

问题


I am using WritableImage to write image into xls file, when I run it inside eclipse it is working fine. But when I run it in executable jar, I getting FileNotFoundException.

WritableImage image = new WritableImage(0.0D, 0.0D,
      1.0D, 3.0D,
      new File(getClass().getResource("/img/abouts.png").getPath()));

The image is indeed inside the jar. C:\scheduler-1.0-SNAPSHOT-jar-with-dependencies.jar\img\abouts.png

Here's the exception:

java.io.FileNotFoundException: file:C:<some directory>scheduler-1.0-SNAPSHOT-jar-with-dependencies.jar!/scheduler.jar!/img/abouts.png (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:120)
    at jxl.biff.drawing.Drawing.getImageBytes(Drawing.java:778)
    at jxl.biff.drawing.BlipStoreEntry.<init>(BlipStoreEntry.java:98)
    at jxl.biff.drawing.DrawingGroup.write(DrawingGroup.java:427)
    at jxl.write.biff.WritableWorkbookImpl.write(WritableWorkbookImpl.java:931)
    at com.flagpole.client.IndividualCabinSched.<init>(IndividualCabinSched.java:218)
    at com.flagpole.client.Reports.getIndividualCabinScheReport(Reports.java:948)
    at com.flagpole.client.Reports.actionPerformed(Reports.java:652)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)

回答1:


Once the image is an a jar it is an embedded-resource that will not be accessible by File. Normally we would use a method call or constructor that accepts URL, but the API being used does not support that.

So instead you might use new WritableImage(double,double,double,double,byte[]) where the byte[] is the bytes of the image.



来源:https://stackoverflow.com/questions/28655155/java-io-filenotfoundexception-when-image-file-is-inside-jar-using-jxl-write-writ

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