java导出可执行jar包后,工程中使用的图片找不到路径,但是在myeclipse中运行没错

问题描述

我在一个jpanel中放置一张图片,但是导出为可执行的jar包后,这张图片找不到了,提示不能加载此图片,程序中使用的是Classloader.getSystemResource("工程下的图片"),java导出可执行jar包后,工程中使用的图片找不到路径,但是在myeclipse中运行没错,请问各位大哥,怎么实现呢?

解决方案

我测试了一下,我把图标放在类的同目录下,通过Class.getResource返回的地址来构造File对象,获取不到图片;而直接通过Class.getResourceAsStream能返回图片数据。下面是我的测试代码:package image;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;public class ImageLoader {public static void main(String[] args) throws Exception {String url = ImageLoader.class.getResource("image.jpg").toString();System.out.println("find the image : " + url);//在jar包内运行无法访问imageFile image = new File(url);if (image != null && image.exists()) {System.out.println("The image size : " + image.length());}//在jar包内可以获取图片数据InputStream is = ImageLoader.class.getResourceAsStream("image.jpg");if (is != null) {System.out.println("The image exists ");FileOutputStream out = new FileOutputStream("c:/new.jpg");byte[] temp = new byte[1024];int len;while((len = is.read(temp)) > 0) {out.write(temp , 0 ,len);}is.close();out.close();System.out.println("The image finish to copy");} else {System.out.println("The image does not exist");}}}这个在jar运行也测试过,可以把图片复制到c盘,我想你的需求也类似,至少要能得到图片数据。
解决方案二:
把你的图片放到SRC目录下,打包时一块打到JAR包里使用时getClass().getResource("/");
解决方案三:
getClass().getResource("工程下的图片"); 以类(类路径)为基准查找

时间: 2024-10-03 06:55:13

java导出可执行jar包后,工程中使用的图片找不到路径,但是在myeclipse中运行没错的相关文章

IntelliJ IDEA导出Java 可执行Jar包

原文:IntelliJ IDEA导出Java 可执行Jar包 保证自己的Java代码是没有问题的,在IDEA里面是可以正常运行的,然后,按下面步骤: 打开File -> Project Structure -> Artifacts,如下图 点击"+",选择"Jar",选择Empty或From modules with dependencies,后者会把在项目中用到的Jar包解压开,当成项目的一部分,打包到最后的Jar包中.但是这样会有一个问题,即,如果项

Java源代码打成可执行jar包后连接不上sql2000数据库。在eclipse里能连上。求大神帮助,感谢

问题描述 因目前在手机中发的贴,无法贴图.不知各位大神是否遇到过这情况.. 解决方案 解决方案二:没有错误信息,很难判断什么问题解决方案三:你的包中有没有将sqlserver的驱动包一起打包进去,如果没有一起打包进去的话,那你运行的时候需要带上-cp参数,并将驱动jar带上.解决方案四:打的jar包中有一个META-INFMANIFEST.MF文件,其中有一个class-path属性,这个属性后面跟上要依赖的jar包的路径和名称就可以了,如果跟当前执行jar在同一个目录下面,那么class-pa

使用eclipse创建java程序可执行jar包

一.eclipse中,在要打成jar包的项目名上右击,出现如下弹出框,选择"export": 二.在接下来出现的界面中点击"jar file",然后next: 三.在接下来出现的界面中,如图所示勾选上要打包的项目以及其他选项,例如test项目:然后点击右边箭头所指的browse,选择打好的jar包要保存的目录,同时给自己的jar包命名,例如我这里选择存放在桌面,名字为jarTest;然后点击"next",在之后弹出的界面中再点击一次"n

Eclipse创建java程序可执行jar包教程_java

一.eclipse中,在要打成jar包的项目名上右击,出现如下弹出框,选择"export": 二.在接下来出现的界面中点击"jar file",然后next: 三.在接下来出现的界面中,如图所示勾选上要打包的项目以及其他选项,例如test项目:然后点击右边箭头所指的browse,选择打好的jar包要保存的目录,同时给自己的jar包命名,例如我这里选择存放在桌面,名字为jarTest;然后点击"next",在之后弹出的界面中再点击一次"n

eclipse生成【带有外部jar包】的java可执行jar包

之前有写过一篇使用eclipse生成java可执行jar包,但是最近的一次使用中无论如何都不成功,当双击执行打成的jar时,弹出如下错误: could not find the main class:mailTest.SendMailTest1.Program wil exit 针对这一问题,我首先想到在上一次编写java聊天小程序打包时的问题,也是这个错误,当时网上说需要更改eclipse中该项目的jdk版本为1.6,如图: 虽然意料之中,但是依旧有些遗憾的是,这样修改后生成的jar包,在双击

浅谈java 执行jar包中的main方法_java

浅谈java 执行jar包中的main方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar 执行后总是运行指定的主方法,如果 jar 中有多个 main 方法,那么如何运行指定的 main 方法呢? 用下面的命令试试看: java -classpath ****.jar ****.****.className [args] "****.****"表示"包名": "className"表示&

android-Android工程导入jar包后一直出现的错误

问题描述 Android工程导入jar包后一直出现的错误 在做读取word的程序,导包之后一直出现java.lang.NoClassDefFoundError: org.apache.poi.poifs.filesystem.POIFSFileSystem这个问题,一直找不到这个类,不知道是怎么回事 解决方案 在android工程导入第三方jar包Android studio 导入工程 出现错误android studio依赖工程和jar包的导入 解决方案二: 你看下dependence中有此包

服务器-JAVA 关于发布JAR包后热部署问题

问题描述 JAVA 关于发布JAR包后热部署问题 目前有2台服务器,负载均衡,2台服务器上分别部署了WINDOWS后台服务程序, 修改了JAR包后,可以不重启服务重新加载吗?万分感谢! 解决方案 方法: 1. 先了解类加载器,编写自定义类加载器 2. OSGI技术,已经有很规范的技术实现了 解决方案二: 修改tomcat的 server.xml 设置 reloadable="true" ,重启后即可!

sqlserver 2000-eclipse导入连接数据库需要的三个jar包后,还是连不上数据库

问题描述 eclipse导入连接数据库需要的三个jar包后,还是连不上数据库 代码如下:mport java.sql.*;import java.util.Vector;import javax.swing.*;public class Test1 extends JFrame{ JTable jt=null;JScrollPane jsp=null;Vector rowData=null;Vector columnName=null;Connection cn=null;PreparedSta