`

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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics