[英]Using URL or File (in ImageIO.read)
我制作了一個使用多個圖像的應用程序。 我有2種方法來運行我的應用程序:
-按想法run
-制作一個胖jar文件並從控制台java -jar app.jar
如果要從Idea
運行它,則必須使用:
BufferedImage backgroundImage = ImageIO.read(new File("res/field.png"));
代替
BufferedImage backgroundImage = ImageIO.read(getClass().getClassLoader().getResource("res/field.png"));
<-這就是我在jar文件大小寫中必須使用的
為什么? 我以為他們差不多。 有什么通用的方法可以解決我的問題嗎?
我一直使用:
BufferedImage backgroundImage = ImageIO.read(getClass().getResource("res/field.png"));
從IDE和jar都可以使用。 .getResource(...)返回URL,即jar://或file://
請注意,路徑要么以/開頭(在這種情況下,它是相對於包根目錄),還是相對於類包-如果您的類是com.example.Test,則/res/
指向文件夾com。 / example / Test / res /。
您甚至可以使用靜態版本-YourClassName.class.getResource(...),使您可以輕松地到達包樹的其他“分支”(您可以使用來自不同分支中的類的引用)
使用java.io
,相對路徑取決於當前工作目錄。 使用getResource時,您必須在classpath
具有該資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.