- 1、本文档共2页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
问题描述:Eclipse中使用Build Fat Jar打包后找不到图像 源代码如下:URL url = getClass().getClassLoader().getResource(icons/logo.gif); label=new JLabel(,new ImageIcon(Toolkit.getDefaultToolkit().getImage(url)),JLabel.CENTER);在Eclipse里运行没有问题使用Build Fat Jar打包后,把jar文件拿出来,总是出现如下错误Uncaught error fetching image:JAVA.lang.NullPointerExceptionat sun.awt.image.URLImageSource.getConnection(Unknown Source)at sun.awt.image.URLImageSource.getDecoder(Unknown Source)at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)at sun.awt.image.ImageFetcher.run(Unknown Source)问题讨论:出现这种问题的原因大多是因为路径的问题,往往是在项目中运行正常,但是一旦打包成Jar后就不能正常显示了,下面总结一下解决此类问题的方法:一、通过使用外部资源文件的方式解决把项目打包生成Jar后,再新建一文件夹,把项目中所有使用的图片文件和生成Jar文件放在该目录下,只要代码对图片文件的引用路径正确,如:ImageIconimage=newImageIcon(SwingResourceManager.getImage(icons/logo.gif));就可以了。这种方式下,图片文件与类文件不是一块放在包中的,类文件在包中,而图片文件在项目根目录下。二、通过使用内部资源文件的方式解决把所用的图片文件放在项目使用的包中,打包时把图片文件同时打进Jar文件中。这种方式在具体代码中应使用下面其中一种:ImageIcon image = new ImageIcon(this.class.getResource(icons/logo.gif));下面对这种方式详细说明:问题解决:注:若磁盘中的文件资源与eclipe工作空间不能同步,可以试试按下F5刷新下当你编写一个图形界面的程序的时候,你肯定要使用各种图片资源。那么,当你发布你的程序的时候,这些图片资源如何发布呢?最简洁的方式就是将这些图片资源连同你的class文件一起打包为一个可执行Jar文件,这样你只需发布一个jar文件就囊括了所有的内容,用户只需双击该Jar文件就能运行程序。如果把图片打包在Jar文件中,编写程序的时候如何访问这些图片呢?这些图片的路径是什么呢?可以用getResource()方法来解决这个问题。下面我们具体分析2种最常见的情况:1、你将所有资源打包为andy.jar,你的类位于一个包中:package andycpp;你的图片资源全部放在images文件夹中,而images文件夹也位于andycpp包内。这样的话,最终的路径表现为:andy.jar|__andycpp|__ GUITest.class|__ images|__ Snap1.jpg因为图片文件夹和引用他的类位于同一个层次,因此可以通过相对路径来访问: getResource()方法,但是你不能随便用,你只能使用和图片文件夹处于同一层次的类的getResource()方法。比如上图中,GUITest类和images处于同一层次,所以要使用该类的getResource()方法。2、另一种情况,如果你的类有很多,并且包结构很复杂,那么你就不大可能把图片和类放在同一个层次上,而是应该把图片放到最外层,让所有的类通过绝对路径来访问该图片:andy.jar|__andycpp|__ GUITest.class|__ images|__ Snap1.jpg代码如下:java.net.URLimgURL = GUITest.class.getResource(/images/Snap1.jpg);ImageIcon img1 = new ImageIcon(imgURL);大家看到和上述代码的区别了吗?区别非常细微,仅仅是在“images”的前面加了一个反斜杠/,这个反斜杠就表示根目录,没有反斜杠就表示相对路径。补充:Class.getResource()、ClassLoader.getSystemResource()这些方法的搜索过
您可能关注的文档
- EEC初中英语阅读C专项练习.doc
- EFG高考语文疑难成语.doc
- Egdrjqo物流管理师认证模拟试题1[1].doc
- EJP438型自动络筒机故障维修及分析.doc
- enkiyak浙江教育省中小学音乐教学建议.doc
- ePass3000常见问题解答.doc
- Epmylm2012考研数学3考试大纲.doc
- EPON技术题型2.doc
- EPS的常见问题及接线方式.docx
- ERP市场营销策略分析.doc
- 小学美术课堂中的多元评价模式应用教学研究课题报告.docx
- 小学英语文化主题词汇卡片对跨文化交流的促进作用教学研究课题报告.docx
- 小学阶段零花钱消费与消费习惯养成的实证研究教学研究课题报告.docx
- 《血液透析动静脉内瘘并发症的护理措施对内瘘通畅率的影响研究》教学研究课题报告.docx
- 2025年宽带无线接入网项目合作计划书.docx
- 2025年金属制品项目建议书.docx
- 小学英语情景剧编演提高学生口语表达与跨文化交流能力教学研究课题报告.docx
- 小学数学空间教学中立体思维训练的实践教学研究课题报告.docx
- 高中化学实验教学与创新实践能力培养实践报告教学研究课题报告.docx
- 小学音乐乐器教学对学生音乐技巧的培养教学研究课题报告[001].docx
文档评论(0)