一些坑 Java 执行命令行命令 Spring Boot 打包为jar ResourceUtils.getFile 等出现的问题
Java 执行命令行命令
这个没技术含量的东西耗费了我半个多小时
String command = ....;
Process process = Runtime.getRuntime().exec(command);
一个简单的命令这样执行时没问题的,但是如果参数中存在空格,那么就会出问题
会被分割为不同的参数,使用""包含起来也不行
解决方案:
使用重载的方法
String[]command = ....;
Process process = Runtime.getRuntime().exec(command);
Spring Boot 打包为jar 之后出现问题
比如这段代码本地调试没问题,但是打包之后就报错了
File file = ResourceUtils.getFile("classpath:"+cfgpath); 打包变成jar出错
这个文件本身是存在的(jar包中也有),但是运行的时候是在jar中,获取的路径也是在jar包中
这个方法并不推荐,当然如果是使用war包解压到tomcat部署应该是没问题的(还没尝试)
Spring 推荐我们使用 ClassPathResource来获取,当然使用getFile的接口仍然是会抛出异常的,但是可以使用 classPathResource.getInputStream();
如果我们之前写的接口类型接收的参数是File怎么办
如果文件不是很大,可以考虑使用以下解决方案,直接复制到临时目录即可:
//获取临时文件目录
String folder = System.getProperty("java.io.tmpdir");
File file = new File(folder + File.separator + cfgpath);
file.createNewFile();
//common-lang3
FileUtils.copyInputStreamToFile(inputStream,file);
或者直接把配置文件放在某个固定目录下,然后配置文件里面手动写一下,但是我如果配置文件更新还要手动把配置文件复制到那个目录
一些坑 Java 执行命令行命令 Spring Boot 打包为jar ResourceUtils.getFile 等出现的问题的更多相关文章
- Spring Boot打包war jar 部署tomcat
概述 1.Spring Boot聚合工程打包war部署Tomcat 2.Spring Boot打包Jar,通过Java -jar直接运行. 3.提供完整pom.xml测试项目 至github 4.项目 ...
- 使用命令行启动spring boot项目
1.找到项目路径 cd target 2.敲命令--------java -jar xxxx.jar ------------------------------------------------- ...
- spring boot 打包成jar 包在发布到服务器上
http://blog.csdn.net/sai739295732/article/details/49444447
- Spring Boot 直接用jar运行项目
概述 在Spring Boot 开篇-创建和运行一文中,介绍了如何创建一个Sprint Boot项目并且运行起来.但是运行的方式是在IDEA中直接Run起来的.还有另一中方式可以可以把Spring B ...
- system调用命令行命令而不显示命令行窗口
system调用命令行命令而不显示命令行窗口 通常用system调用命令行命令时都会弹出黑底白字的命令行窗口,下面的代码可以不显示弹出的命令行窗口. 代码如下 #pragma comment( lin ...
- C/C++ 程序中调用命令行命令并获取命令行输出结果
在 c/c++ 程序中,可以使用 system()函数运行命令行命令,但是只能得到该命令行的 int 型返回值,并不能获得显示结果.例如system(“ls”)只能得到0或非0,如果要获得ls的执行结 ...
- MySql命令行命令和SQL语句
一.常用mysql命令行命令 1.启动MYSQL服务 net start mysql 停止MYSQL服务 net stop mysql 2.netstat -na|findstr 3306 查看被监听 ...
- Windows命令行命令集锦
原文:Windows命令行命令集锦 转自:http://www.me2wg.com/bbs/forum.php?mod=viewthread&tid=15830 winver--------- ...
- iOS工程师常用的命令行命令总结
感觉有点标题党了. 作为一个iOS工程师,没有做过服务端,主要用的是mac电脑,此篇博文是记录我在工作,学习的过程中用的命令行命令的记录和归纳总结 一. mac命令行 1. cd /Users/xxx ...
随机推荐
- 关于 Keras 模型
在 Keras 中有两类主要的模型:Sequential 顺序模型 和 使用函数式 API 的 Model 类模型. 1.Sequential 顺序模型 ====>>开始使用 Keras ...
- .NET配置引用程序集的路径(分离exe和dll)
按照引用程序集路径的不同,程序集DLL分为两类: 1)全局DLL(在GAC中注册,GAC——全局程序集缓存),有关GAC的详细资料可以参考一下链接: http://dddspace.com/2011/ ...
- 分布式系统中我们会对一些数据量大的业务进行分拆,分布式系统中唯一主键ID的生成问题
分布式全局唯一ID生成策略 https://www.cnblogs.com/vandusty/p/11462585.html 一.背景 分布式系统中我们会对一些数据量大的业务进行分拆,如:用户表,订 ...
- Cmder下ssh免密登录配置
1.本地生成ssh-key 在本地cmder终端下运行下面的命令生成ssh的公钥和私钥文件: ssh-keygen -t rsa 其中,.ssh/id_rsa为私钥文件,留在本地使用,而.ssh/id ...
- C++分治策略实现线性时间选择
问题描述: 给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k小的元素,即如果将这n个元素依其线性序排列时,排在第k个的元素即为要找到元素. 细节须知:(与之前的随笔相比) (1 ...
- vs2019发布Web到云服务器(IIS)
捣鼓了也有几天,到处收集资料终于折腾出来,做点小笔记 原文地址:https://www.cnblogs.com/potential/p/3751426.html 一.我的环境: Windows Ser ...
- 动态代理(一)——JDK中的动态代理
在开始动态代理的描述之前,让我们认识下代理.代理:即代替担任执行职务.在面向对象世界中,即寻找另一个对象代理目标对象与调用者交互.Java中分为静态代理和动态代理.这里对于静态代理不做详述.它们之间的 ...
- 近3年常考的Spring面试题及答案
1. 一般问题 1.1. 不同版本的 Spring Framework 有哪些主要功能? Version Feature Spring 2.5 发布于 2007 年.这是第一个支持注解的版本. Spr ...
- vue实现跨域请求的设置
vue实现跨域请求,需要在vue.config.js里添加以下设置 proxy: { '/service/rest': { target: 'http://localhost:8080/autotab ...
- Oracle 加解密教程
参考Oracle官方文档 在Oracle使用dbms_crypto包进行加解密 首先,授权当前用户使用加解密包 在sql中运行:connect sqlplus as sysdbagrant execu ...