swing 项目,打包、找不到图片、打成EXE找不到环境的问题_swing打包成exe,找不到依赖-程序员宅基地

技术标签: Java  java  maven  开发语言  

1. 创建项目

1.1 普通java项目

可以直接创建java项目,然后把各种依赖包都贴进来。

 

项目结构:

在src里面写swing代码即可。有依赖资源直接贴进来(dll、so、图片等),不用创建resource文件夹。

1.2 maven项目

 

 资源文件可以放在resources里

依赖jar可以通过pom导入,不需要外部导入了。 

1.3 导出jar

右键项目,Export

 

 Finish

2.程序读取图片路径代码

URL logoUrl = this.getClass().getResource("/xxx.jpg"); // 打包后class的根目录有这个图
Image image = new ImageIcon(logoUrl).getImage();
this.setIconImage(image); // this 指当前JFrame

 3.关于配置文件外提

和读取图片文件一样,可以写properties文件,然后通过java工具类读取,在程序中使用。或者按行读取文本。

/**
	 * 按行读取exe同目录下的camera.ini
	 * @return
	 */
	public static List<String> readIni() {
		List<String> conf = new ArrayList<String>();
		String confPath = System.getProperty("user.dir") + "/camera.ini";
		System.out.println(confPath);
    	//读取配置文件
    	try {
			InputStream in = new BufferedInputStream (new FileInputStream(confPath));
			BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
			
			String str = null;
			while((str = bufferedReader.readLine()) != null)
			{
				conf.add(str);
				System.out.println(str);
			}
			in.close();
			bufferedReader.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return conf;
	}

 

4.打exe流程

 

 

 

 

 

 

 一路next

 5.部署流程

 把依赖的jre和库文件都放到C盘根目录即可(因为打exe时已经指定了path)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/nickDaDa/article/details/124723733

智能推荐

靶场-Hacker_Kid-v1.0.1-程序员宅基地

文章浏览阅读193次。5.nmap扫描出来的信息知道这里是tornado框架,可能存在ssti注入,测试:192.168.12.170:9999/?name={{3*3}}3.对9999端口的登录页面进行登录,用户admin失败,saket/Saket!2./usr/bin/python2.7 权限设置是有问题的,查找与root相关的进程。base64解密后,发现用户名和密码:admin/Saket!2.对靶机ip进行端口扫描,53端口、80端口和9999端口。1.主机发现,发现靶机ip:192.168.12.170。_hacker_kid-v1.0.1

python迭代器(Iterator)与生成器(Generator)_python迭代器和生成器-程序员宅基地

文章浏览阅读2k次,点赞5次,收藏12次。_iter__()方法返回一个迭代器对象,一般是self,这个返回的对象必须实现了__next__()方法,因为for循环使用这个迭代器时,会首先调用一次__iter__(),然后每次循环时调用这个__iter__()返回的对象的__next__()方法,将__next__()返回值赋给循环变量。另外,关于一个迭代器对象可以迭代几次的问题。4. 生成器,生成器是一种特殊的迭代器,可以通过生成器表达式或生成器函数实现,每次循环会保存生成器当前的状态,下次循环时当前生成器中的状态推导下一个元素。_python迭代器和生成器

安全刷写简单说明-程序员宅基地

文章浏览阅读878次,点赞9次,收藏11次。ECU得到以上两串数据后,进行对比,如果一致,说明在软件刷写过程中,数据未被篡改;如果不一致,说明在刷写过程中,数据有可能被篡改。目前很多厂商会使对软件进行签名操作,从一定程度上实现安全刷写的目的。在刷写过程中,由上位机将刷写文件以及文件签名传递给ECU。为了避免ECU被恶意篡改数据,从而导致ECU功能失效。ECU接收到签名后,对签名进行解密得到一串数据。ECU会使用算法对刷写文件进行计算得到一串数据。使用公钥对签名进行解密,主要嵌入ECU内部。使用私钥对刷写文件进行签名,由车厂保管。_安全刷写

无涯教程-Redis - UNSUBSCRIBE 命令函数-程序员宅基地

文章浏览阅读372次,点赞8次,收藏10次。Redis UNSUBSCRIBE 命令从给定通道取消订阅客户端,如果没有给出通道,则从所有通道取消订阅。

linux下vivado tcl使用 & linux环境变量设置-程序员宅基地

文章浏览阅读1.5k次。设置永久的环境变量在path环境变量中添加Vivado的路径,路径设置到bin文件夹,例如C:\Xilinx\Vivado\2014.1\bin永久设置需要更改/etc/profile文件在最后一行添加export CLASSPATH=./opt/Xilinx/2016.4/vivado/bin命令行使用tclvivado -mode tcl要注意,使用前要先source一下sett..._安装vivado后怎么设置环境变量

使用nacos框架进行服务发现与配置管理时,启动SpringBoot出错!_reason: failed to convert java.lang.string to java-程序员宅基地

文章浏览阅读527次。使用nacos框架进行服务发现与配置管理时,启动SpringBoot出错!什么个出错法???就是在向nacos提交服务的时候,在bootstrap.yml配置spring:cloud:namespace时,提交的id异常。Description:Failed to bind properties under 'spring.http.encoding.charset' to java.nio.charset.Charset: Property: spring.http.encoding._reason: failed to convert java.lang.string to java.nio.charset.charset

随便推点

matlab做矩阵的一元回归分析,Matlab中进行一元线性回归分析的方法-程序员宅基地

文章浏览阅读981次。Matlab中实际上有多个函数可以实现回归分析的功能,如regress,polyfit,lsqcurvefit等。这里简单总结一下polyfit函数的用法:polyfit函数基于最小二乘法,使用的基本格式为:p = polyfit(x,y,n)[p,S] = polyfit(x,y,n)[p,S,mu] = polyfit(x,y,n)其中每个命令中的n为多项式拟合的次数,当n为1时,即为一次拟合..._maltab实现一元回归分析需要注意哪些

线性代数:矩阵学习笔记_小写黑体是矩阵-程序员宅基地

文章浏览阅读122次。矩阵用大写字母表示,向量用小写黑体字母表示。向量也是矩阵。矩阵运算_小写黑体是矩阵

关于二维数组、三维数组及多维数组的深度理解及其建立方法(为个人理解,经过实践验证)-程序员宅基地

文章浏览阅读1.6k次,点赞14次,收藏5次。关于二维数组、三维数组及多维数组的深度理解及其建立方法(为个人理解,经过实践验证是正确的)_三维数组

Unity, Android ,StreamingAssets路径下配置文件使用UnityWebRequest的读取(2018版本WWW方法已经弃用)_unity unitywebrequest streamingassetspath android-程序员宅基地

文章浏览阅读4.5k次。废话不说了,直接上代码://读取StreamingAssets中的配置文件复制到移动端的Application.persistentDataPath路径下private IEnumerator GetJsonFiles(){ string path = Application.streamingAssetsPath + "/Configs/CpuInfo.json"; Un..._unity unitywebrequest streamingassetspath android

jpa 默认空字符_如何优雅的实现JPA对char类型字段的去空格-程序员宅基地

文章浏览阅读217次。一、引言作为程序员,不可避免的会接触到遗留系统,表字符串字段类型定义成char的情况。通常情况下,对应定长的char字段的数据,需要程序进行去空格,但是每个char字段都进行trim操作,程序结构不够优雅。那么如何优雅的实现char字段的trim呢?二、去空格常见的写法当Hibernate/JPA遇上char类型时,典型的写法是在实体类的get()方法中进行处理。假定name字段对应表字段类型ch..._jpa char

unity 动态添加动画帧事件_unity事件帧实现效果-程序员宅基地

文章浏览阅读1.1w次,点赞4次,收藏28次。在游戏开发中,为了实现更好的效果,动画的应用还是很广泛的, 下面主要说一下如何动态的为动画添加相应的动画帧事件。1.首先创建动画文件,动画根据需求自行编辑2.脚本一定要加在播放动画的物体上:3.代码的具体实现:找到animator上所有的动画clip 根据动画名字找到自己想修改的动画文件 添加对应的帧事件 private void AddAnimationEven..._unity事件帧实现效果