`

今天工作遇到问题总结(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,记录下来希望对看到的人有所帮助,我先去歇歇了。

分享到:
评论

相关推荐

    AWT在linux下的中文乱码

    标题 "AWT在Linux下的中文乱码" 涉及的是Java图形用户界面(GUI)开发中的一个问题,尤其是在非Windows操作系统环境下。AWT(Abstract Window Toolkit)是Java早期提供的一个用于创建GUI的基本库,它依赖于本地操作...

    java调用bat批处理与sh脚本

    这篇博客“java调用bat批处理与sh脚本”将详细讲解如何在Java程序中实现这一功能。 首先,我们要理解Java是如何与操作系统进行交互的。Java提供了`Runtime`类和`ProcessBuilder`类,这两个类都可以用来执行外部命令...

    java在win下启动bat和在linux下启动shell脚本

    为了保证脚本执行的可靠性,Java代码可能还会包含异常处理机制,比如捕获`IOException`来处理执行命令时可能出现的任何问题。此外,可能还会有一个关闭进程的逻辑,以确保即使在程序异常终止时,也能正确关闭执行的...

    JAVA API中文帮助文档UTF-8编码格式,支持Linux操作系统

    本资源包含的Java API中文帮助文档,是针对Linux环境优化的,这意味着开发者在Linux环境下查阅这些文档时,无需担心因编码问题导致的乱码现象。这对于在Linux服务器上进行Java开发的程序员来说,是一个非常实用的...

    icepdf6.1.1 pdf转图片 无水印,解决中文乱码问题,win linux均可

    针对这些问题,本文将详细介绍如何使用icepdf6.1.1这个开源库进行无水印的PDF转图片操作,并解决中文乱码问题,同时适用于Windows和Linux操作系统。 首先,icepdf是一款强大的Java PDF库,它提供了全面的PDF解析和...

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

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

    java生成csv文件乱码的解决方法示例 java导出csv乱码

    在Java中生成CSV(Comma Separated Values)文件时,可能会遇到乱码问题,这通常是由于编码设置不正确导致的。CSV文件是一种常见的数据交换格式,通常用于导入和导出数据到电子表格程序如Microsoft Excel。当在Java...

    eclipse中java使用OPENCV

    - 若遇到找不到库的问题,检查`java.library.path`设置是否正确,以及相应的库文件是否存在于指定路径下。 - 记得在每次OpenCV更新版本后,更新项目的库引用,以确保使用最新功能。 以上就是Eclipse中Java使用...

    zysong.ttf jfreechart 解决中文乱码 问题

    然而,当在Linux环境中处理包含中文字符的数据时,可能会遇到中文乱码的问题。本文将详细探讨这个问题及其解决方案,主要围绕“zysong.ttf”字体库在解决JFreeChart在Linux系统下的中文显示问题。 首先,我们需要...

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

    在使用IReport设计报表时,有时会遇到中文不显示或者出现乱码的问题,这通常是由于字体设置、编码格式不匹配或系统环境配置不当等因素引起的。本文将详细解析这些问题的成因,并提供十几种可能的解决方案,帮助你...

    MySQL中文乱码问题解决方案

    ### MySQL中文乱码问题解决方案 在使用MySQL的过程中,中文乱码问题是常见的问题之一,尤其是在数据库初始设置不当时,更容易出现此类问题。本文将详细介绍如何彻底解决MySQL中的中文乱码问题。 #### 一、理解中文...

    Linux 字体资源和使用说明

    当处理含有中文字符的文本时,如在Java程序中添加水印,可能会遇到中文乱码的问题。本篇文章将深入探讨Linux字体资源、解决Java程序中文乱码的策略,以及如何有效地在Linux环境中管理和使用字体。 首先,让我们了解...

    linux转化windows文件编码格式脚本

    Linux 转换 Windows 文件编码格式脚本是将 Windows 上的文件编码格式转换为 UTF-8 编码,以便在移植 Windows 代码到 Linux 下时避免注释代码乱码和编码格式引起的编译错误。 该脚本使用 Bash shell 脚本语言编写,...

    jna调用C语言函数库dll、so例子

    Java Native Access(JNA)是Java平台上的一个开源库,它允许Java代码直接调用操作系统提供的本地函数,而无需编写JNI(Java Native Interface)代码。JNI是Java与本机代码交互的标准方式,但它通常需要编写大量的C/...

    使用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图片输出文件夹");

    Java Excel转为PDF(aspose)工具类 复造轮子

    在这个工具类中,`convertExcelToPdf`方法接收Excel文件路径和输出PDF文件路径作为参数,加载Excel文件到Workbook对象,然后创建PdfSaveOptions实例,设置保存格式为PDF。为了保持图片质量,可以调整图片的压缩质量...

    DocumentRenderer

    Java Swing是Java Standard Edition (Java SE)的一部分,它提供了一套丰富的用户界面组件,用于构建桌面应用程序。 在Java Swing中,我们可以使用`javax.swing.JEditorPane`或`javax.swing.WebView`(在JavaFX中)...

    JSP中文乱码问题

    在进行Web开发时,特别是使用Java Server Pages(JSP)技术,经常会遇到中文显示乱码的问题。这不仅影响用户体验,也增加了开发与调试的复杂度。本文将针对常见的JSP中文乱码问题,提供一系列解决方案,帮助开发者...

Global site tag (gtag.js) - Google Analytics