windows工程移植到AIX有感

由于本地开发用的是jdk1.6,在AIX系统中需要1.6版本的,必须在root下安装,否则可能出现不能执行情况。
一、检查系统
root@sdteleb#oslevel
6.1.0.0
root@sdteleb# bootinfo -y ##显示AIX机器硬件是32位还是64位
64
root@sdteleb# bootinfo -K ##显示AIX系统内核是32位还是64位
64
因此,系统需要安装64位的jdk,即64-bit Java 6 SDK
二、网上有很多,我参考的是 http://maxhighsky.blog.163.com/blog/static/30775179201063013620468/
当然不修改系统变量也可以,只需要在写shell时的jre是安装的1.6的。
三、遇到的问题:
1,由于要执行shell,直接从别的地方拷贝过来的,总是报错。由于有特殊字符,别的命令都看不到,特殊符号^M只有在vi编辑器中才能看到,用more看不到。去掉特殊字符即可。
2,Could not find the main class: .. Program will exit.
shell中CLASSPATH=后面的内容不要换行;另起一行要追加CLASSPATH=
3,The java class could not be loaded. java.lang.UnsupportedClassVersionError: (com/inspur/eoms/JobAutoClient) bad major version at offset=6
版本号不对应。jdk版本应该是1.6的
4,CLASSPATH=$CLASSPATH:../lib/wsdl4j-1.5.1.jar:../lib/junit-3.8.1.jar
+ /usr/java6_64/jre/bin/java -classpath . com.inspur.eoms.JobAutoClient /u1/tmn/application/jobauto/file/job.txt
Exception in thread "main" java.lang.NoClassDefFoundError: junit.framework.AssertionFailedError
at java.lang.J9VMInternals.verifyImpl(Native Method)
at java.lang.J9VMInternals.verify(J9VMInternals.java:72)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:134)
Caused by: java.lang.ClassNotFoundException: junit.framework.AssertionFailedError
at java.net.URLClassLoader.findClass(URLClassLoader.java:434)
at java.lang.ClassLoader.loadClass(ClassLoader.java:653)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:358)
at java.lang.ClassLoader.loadClass(ClassLoader.java:619)
... 3 more
解决:shell中CLASSPATH=后面的内容不要换行;另起一行要追加CLASSPATH=
5,java工程的绝对路径:
如果shell中有cd /u1/tmn/application/jobauto/bin,其为relativelyPath是当前路径
String relativelyPath=System.getProperty("user.dir");
某个文件夹如conf下
relativelyPath+"/conf/client.properties");
6,乱码问题:
在windows下编码及shell文件都用GBK形式;结果传到AIX系统上执行时,执行程序,调用服务生成文件或传送的字符串都是乱码:参考http://blog.sina.com.cn/s/blog_4c5d0b4b0100b9t1.html
在Windows中文环境下正常编写原程序,用默认的方式编译生成class文件,在运行的时候,我们需要制定参数, $JAVA_HOME/jre/bin/java –Dfile.encoding=GB18030 -classpath $CLASSPATH com.inspur.eoms.JobAutoClient "${jobauto}",系统环境使用默认英文即可,这样JVM就不会根据系统的环境设定默认字符集,而是所有输入输出都使用我们指定的字符集,这样不但解决了英文环境下的中文输出问题,而且还解决了偏僻字的显示问题。
7,shell有关参数:
#!/usr/bin/ksh
set -x
LANG=zh_CN;export LANG
cd /u1/tmn/application/jobauto/bin
PATH=$PATH:/usr/java6_64/jre/bin/:/usr/java6_64/bin
export PATH
JAVA_HOME=/usr/java6_64
export JAVA_HOME
CLASSPATH=$CLASSPATH:../lib/axis.jar:../lib/activation.jar:../lib/axis-ant.jar:../lib/castor-0.9.5.2.jar
CLASSPATH=$CLASSPATH:../lib/wsdl4j-1.5.1.jar:../lib/junit-3.8.1.jar
export CLASSPATH
$JAVA_HOME/jre/bin/java –Dfile.encoding=GB18030 -classpath $CLASSPATH com.mypackage.JobAutoClient

8,locale -a 查看支持字符编码


引用http://yjzagan2003.iteye.com/blog/963989
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值