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 等出现的问题的更多相关文章

  1. Spring Boot打包war jar 部署tomcat

    概述 1.Spring Boot聚合工程打包war部署Tomcat 2.Spring Boot打包Jar,通过Java -jar直接运行. 3.提供完整pom.xml测试项目 至github 4.项目 ...

  2. 使用命令行启动spring boot项目

    1.找到项目路径 cd target 2.敲命令--------java -jar xxxx.jar ------------------------------------------------- ...

  3. spring boot 打包成jar 包在发布到服务器上

    http://blog.csdn.net/sai739295732/article/details/49444447

  4. Spring Boot 直接用jar运行项目

    概述 在Spring Boot 开篇-创建和运行一文中,介绍了如何创建一个Sprint Boot项目并且运行起来.但是运行的方式是在IDEA中直接Run起来的.还有另一中方式可以可以把Spring B ...

  5. system调用命令行命令而不显示命令行窗口

    system调用命令行命令而不显示命令行窗口 通常用system调用命令行命令时都会弹出黑底白字的命令行窗口,下面的代码可以不显示弹出的命令行窗口. 代码如下 #pragma comment( lin ...

  6. C/C++ 程序中调用命令行命令并获取命令行输出结果

    在 c/c++ 程序中,可以使用 system()函数运行命令行命令,但是只能得到该命令行的 int 型返回值,并不能获得显示结果.例如system(“ls”)只能得到0或非0,如果要获得ls的执行结 ...

  7. MySql命令行命令和SQL语句

    一.常用mysql命令行命令 1.启动MYSQL服务 net start mysql 停止MYSQL服务 net stop mysql 2.netstat -na|findstr 3306 查看被监听 ...

  8. Windows命令行命令集锦

    原文:Windows命令行命令集锦 转自:http://www.me2wg.com/bbs/forum.php?mod=viewthread&tid=15830 winver--------- ...

  9. iOS工程师常用的命令行命令总结

    感觉有点标题党了. 作为一个iOS工程师,没有做过服务端,主要用的是mac电脑,此篇博文是记录我在工作,学习的过程中用的命令行命令的记录和归纳总结 一. mac命令行 1. cd /Users/xxx ...

随机推荐

  1. 生成随机验证码,上传图片文件,解析HTML

    1.生成随机图片验证码 1.1 页面调用createvalidatecode 生成随机图片验证码方法: <div class="inputLine"><label ...

  2. 统计numpy数组中每个值出现的个数

    统计numpy数组中某一个值或某几个值出现的个数:sum(data==4) # 统计出现了几个cluster include0Cluster = sum(res == 0) include1Clust ...

  3. Proxy代理对象是如何调用invoke()方法的.

    直奔主题,不说废话.先看java使用Proxy创建代理对象的代码. //一个开发者接口public interface Developer { String code(); void debug(); ...

  4. aspxgridview 实现单选

    <dxwgv:ASPxGridView ID="ASPxGridView1" runat="server"             AutoGenerat ...

  5. Rancher 构建 CI/CD 自动化流程 - 动态配置 Jenkins-slave(二)

    一.说明 1.1 说明 前面介绍采用 Jenkinsfile + KubernetesPod.yaml 方式进行部署项目(Rancher 构建 CI/CD 自动化流程 - 动态配置 Jenkins-s ...

  6. MySql Packet for query is too large问题解决方案

    MySQL会限制Server接受的数据包大小.有时候插入.更新或查询时数据包的大小,会受 max_allowed_packet 参数限制,导致操作失败.报错信息为: Caused by: com.my ...

  7. Linux下查看.so和可执行文件是否debug编译

    如何判断一个.so是否是debug编译的? 如果用此方法:用file来查看一个.so, 根据是否包含”not stripped”来判断该.so是否是debug编译的.然而stripped/not st ...

  8. python之路——阅读目录

    阅读目录 希望大家多多交流,有错误的地方请随时指正,笔记记得可能有点杂 一.python入门 计算机基础 编程语言发展史和python安装  二.数据类型.字符编码.文件处理 python基础数据类型 ...

  9. Unable to connect to HBase using Phoenix JDBC Driver

    Feb 01, 2017; 5:21pm Unable to connect to HBase using Phoenix JDBC Driver 9 posts Hi All,   I am try ...

  10. EasyUI datagrid-export 将datagrid的数据导出至Excel-解决科学计数法

    通过EasyUI datagrid-export.js 将datagrid的数据导出至Excel的时候,如果有类似身份证一样很长的数字,需要在后台返回数据的时候在数字前增加一个 “ ”,将数字转为字符 ...