早上试图将Eclipse项目拷到linux服务器执行,无奈的javac,java居然都耗费了一个小时。。
拿jfreechar的代码做示例,
丢到linux上面,得到如下目录结构:
一。首先编译,javac: javac -encoding gbk
javac -encoding gbk
-cp /usr/local/brand/temp:./org.jfree-2.jar /usr/local/brand/temp/jfreechart/*.java
1.由于代码是gbk编码,需要指定encodeing参数,否则就是:
warning: unmappable character for encoding ASCII
//??????????????
2. cp指定classpath参数。这里有三点:
a)linux下指定多个使用:分割
b)jar需要指定到文件,可以使用path/*通配符,但是path/*.jar就要找不到了。最好的办法是jar放到系统的classpath目录
对java文件,则需要指定到package根目录,比如/usr/local/brand/temp就会包含到jfreechart目录下的2个java类
c) 对编译的文件,需要指定详细文件路径,支持*批量编译多个文件。对与有main类的项目,只需要编译main类,会自动加载引用类。
二。然后就是java,运行了: java -Dfile.encoding="GBK"
java -Dfile.encoding="GBK"
-cp /usr/local/brand/temp:./org.jfree-2.jar jfreechart.BarChartDemo
1.这里与javac的最大不同是类文件按package定义指定,即xx.xx.xx,而不是文件目录路径。并且运行java需要到src根目录下。
2. javac中指定的encoding仅仅是说明源代码文件的编码方式,而在实际java运行过程中,指定的编码则是系统参数file.encoding .下面的日志就是加上-D参数前后的输出,可以看到不指定之前,从DB取到的记录、以及默认的日志输出,都会是乱码。
<<<=================?uin=19878334 ????????|???? 1 | 0
============>???????? uin==19878334
????:item-0B4302BD-82170000100000000000000005FC3C63.0.gif
????:item-0B4302BD-82170000100000000000000005FC3C63.1.gif
????????:oldCode|newCodeBE512F0130000000000000002FD4DA0D | BE
<<<=================?uin=19878334 ????????|????1 | 1
============>导用户商品开始 :uin==19878334
产品图片:item-0B4302BD-82170000100000000000000005FC3C63.0.gif
产品图片:item-0B4302BD-82170000100000000000000005FC3C63.1.gif