`

Axis1的org.apache.axis.enum 与JDK1.5冲突的解决办法

阅读更多

 

最近在修改一个Web Service项目,该项目几年前是我Axis 1.X 版本写的(支持JDK编译级别到1.4)。现在Axis都是Axis2 的版本了,xFire到了CFX,技术日新月异,为了使以前的项目能在JDK1.5以上没有错误。

当我调试该项目时,发现代码中凡是出现“oper.setStyle(org.apache.axis.enum.Style.RPC);”和“oper.setUse(org.apache.axis.enum.Use.ENCODED);”的地方MyEclipse都对其进行了报错。

 

问题原因: 在JDK 1.5及其以上版本中,enum都会被JDK认为是系统关键字,不能作为自定义变量使用。而我的JDK是1.6版本的,因此项目在编译时始终无法通过。

 

在网上下载Axis 1.4的退休版本,并将重要的*.jar文件导入到项目中去。

解决办法:

1、将代码 oper.setStyle(org.apache.axis.enum.Style.RPC); 修改为 oper.setStyle(Style.getStyle("rpc")); 

2、将代码 oper.setUse(org.apache.axis.enum.Use.ENCODED); 修改为 oper.setUse(Use.getUse("encoded"));  ;

3、添加代码

import org.apache.axis.constants.Style;
import org.apache.axis.constants.Use;

 

其他 的地方还有
   
 //oper.setStyle(org.apache.axis.enum.Style.WRAPPED);

        //oper.setUse(org.apache.axis.enum.Use.LITERAL);

        //秦 原来是用axis1.1生成的,现在要造移到1.4上来,用JDK。15以上,需要做以上修改

        oper.setStyle(org.apache.axis.constants.Style.WRAPPED);

        oper.setUse(org.apache.axis.constants.Use.LITERAL);

 

 

 //oper.setStyle(org.apache.axis.enum.Style.WRAPPED);

 

       // oper.setUse(org.apache.axis.enum.Use.LITERAL);

 

        

 

        oper.setStyle(org.apache.axis.constants.Style.WRAPPED);

 

        oper.setUse(org.apache.axis.constants.Use.LITERAL);

 

 搜索到的,别人整理的,一个意思

大家都知道,jdk1.5相对于jdk1.4改进了一些东西,其中之一就是Enum-枚举类型,恰好我们的apache axis1.1中有一个RPC的功能,产生的是包路径下面包含了enum这个单词,这个时候,ecilpse就将他当成了关键字,所以运行是不通过的,解决办法:

1、降低JDK的版本1.5以下就ok了。
2、采用Axis1.4或以上,将org.apache.axis.enum用org.apache.axis.constants.enum替换。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics