`

今天工作遇到问题总结(Java调用Linux命令及Linux输出乱码)

 
阅读更多

前两天应要求给某度做接口(要求今天下午2点前必须做完联调)。上周五同事才给我的文档(周六看了一天设计框架结构)。周一确认文档中不明确的需求,实现了一下程序整体框架结构。周二又写了一天好不容易搞完了(测试都没测,自己测的),结果今天早上测试环境部署时出了问题(我想这回SB了,下午就联调了啊)。还好我临危不乱,现改代码,还算是按时完成了。

都是一些Linux环境下匪夷所思的问题(看来以后还真不能在win下测试代码了,没事就得把程序放linux下测测,这次算是个教训)。
记录下问题及当时的解决方法。
1、在Java中调用并执行Linux命令时,如果部署在win下正常,但部署在linux环境下则有问题。
(1)异常:java.io.IOException: error=12, Cannot allocate memory。
代码如下:
Runtime rt = Runtime.getRuntime();
//执行tar打包命令
Process process = rt.exec("tar zcvf output/test.tar.gz all");
process.waitFor();
(2)上网搜到2条分析文章(貌似要让升级java版本至1.7):
http://fanzhibinhao.blog.163.com/blog/static/1791523120120574159616/ java.io.IOException: error=12, Cannot allocate memory
http://blog.csdn.net/chifengxin/article/details/6573134 执行Runtime.exec异常: error=12,Cannot allocate memory
(3)我今天的解决办法:
多亏了这位兄弟的blog:http://snowolf.iteye.com/blog/648652  
其中介绍了多个压缩工具如tarutils和gziputils工具类。先使用tarutils归档为tar后,再使用gziputils工具压缩,就得到了.tar.gz,从而绕过了使用rt.exec()的方式。反向先用gzip解压成tar,再用tarutils解tar归档文件。而且这位兄弟的代码都是测试通过的,直接就能运行,很赞的说。
2、同上一个问题,生成文件MD5的方法:
md5sum output/test.tar.gz > output/test.md5
直接调linux的md5sum是不行的,因此先用commons工具类算出md5值,再写入文件。
3、Linux 输出中文乱码:
使用Linux Crontab定时:
30 * * * * cd /home/work/local/AIF&&~/local/jdk1.6.0_30/bin/java -jar  -Xms256m -Xmx512m  aif-1.0.0.jar >/dev/null 2>&1
即每天每小时的第30分钟时执行。此时自动执行生成的xml内容中文竟然为乱码。
但是直接在命令行手工执行:java -Xms256m -Xmx512m -jar aif-1.0.0.jar 就没有问题(这个具体啥原因还不清楚)。
这个问题一直没测出过(因为一直是手工执行),其实原因是输出xml文件时未指定utf-8编码,修改为下面后就可以了:
FileWriter fileWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));
看来以后在linux系统输出文件时一定要指定UTF-8。

OK,记录下来希望对看到的人有所帮助,我先去歇歇了。

分享到:
评论

相关推荐

    jsp,java中文乱码问题另类解决方案,jni加密、解密编码

    将任意字符(包括汉字)加密并编码成数字+数字,解密时先解码后解密还原成相应字符。  例如:  原文:测试 helloworld ... 3,可用于解决jsp,servlet的中文乱码问题。  数据加密后传出去,在调用的地方解密即可。

    Ireport中文不显示以及乱码十几种解决方案

    Ireport中文不显示以及乱码十几种解决方案,百度上每种解决方案必定有属于你的哪一种问题。 独家整理、

    使用java实现,通过zpl指令调用 zebra打印机打印标签,含二维码及中文

    两种方案介绍,整个源码可以运行,源码中包含zpl中文手册及需要使用的第三方库及jar包,demo完美解决中文打印及二维码中中文乱码问题

    centos7-mini下一键安装xpdf脚本,解决中文字体报错等

    # 安装执行脚本 # centos7-mini-xpdf-install.sh文件放到用户目录~下 $ cd ~ $ chmod -Rf 755 centos7-...# java调用xpdf实现pdf转png图片: Runtime.getRuntime().exec("pdftopng pdf文件全路径 png图片输出文件夹");

    修改Tomcat运行时jvm编码问题

    最近在部署项目的时候出现数据乱码的情况,经过一番查看项目都是用的UTF-8编码格式,数据也是,但是经过调用接口传给对方就乱码了。 由于是部署在Windows环境下,Windows默认编码GBK,这就导致了jvm运行时编码不一致...

    Java学习笔记-个人整理的

    {1.13}Linux命令}{41}{section.1.13} {1.13.1}基本查看、移动}{41}{subsection.1.13.1} {1.13.2}权限}{42}{subsection.1.13.2} {1.13.3}打包备份与恢复}{42}{subsection.1.13.3} {1.13.3.1}\texttt {tar},\text...

    JspRun!社区论坛系统 v6.0.0 build 20110516 GBK 安装版.zip

    2、 修复了:在某些运行环境中(例如在 LINUX下的 Weblogic10.3 服务器上)用户无法正常上传附件的问题 3、 修复了:审核主题和审核回复操作中可能存在的安全隐患。 4、 修复了:隐藏版块出现在统计-版块排行中的...

    JspRun!社区论坛系统 v6.0.0 build 20110516 UTF-8 源码版.zip

    2、 修复了:在某些运行环境中(例如在 LINUX下的 Weblogic10.3 服务器上)用户无法正常上传附件的问题 3、 修复了:审核主题和审核回复操作中可能存在的安全隐患。 4、 修复了:隐藏版块出现在统计-版块排行中的...

    JspRun!社区论坛系统 v6.0.0 build 20110516 GBK 源码版.zip

    2、 修复了:在某些运行环境中(例如在 LINUX下的 Weblogic10.3 服务器上)用户无法正常上传附件的问题 3、 修复了:审核主题和审核回复操作中可能存在的安全隐患。 4、 修复了:隐藏版块出现在统计-版块排行中的...

    JspRun!社区论坛系统 v6.0.0 build 20110516 UTF-8 安装版.zip

    2、 修复了:在某些运行环境中(例如在 LINUX下的 Weblogic10.3 服务器上)用户无法正常上传附件的问题 3、 修复了:审核主题和审核回复操作中可能存在的安全隐患。 4、 修复了:隐藏版块出现在统计-版块排行中的...

    易语言程序免安装版下载

    “在库中的对应命令名”以@开头表示以cdecl方式调用,否则表示以默认的stdcall方式调用;各参数声明要与其定义一致。  请参考易语言安装目录内的例程:samples\静态编译\调用LIB和OBJ 1. 静态编译方面的改进和...

Global site tag (gtag.js) - Google Analytics