类名少写个public,找了一下午

(好累,终于可以回家了。)

一个同事写了一堆类,然后将某个类交给我让我用axis2发布成web service。但是在调用的过程中出现这样的错误:

AxisServlet:152 - org.apache.axis2.AxisFault: java.lang.RuntimeException: java.lang.IllegalAccessException: Class org.apache.axis2.databinding.utils.BeanUtil can not access a member of class com.mypage.xxxx with modifiers "public"

如果 是java老手,一眼看这错误就知道是jre报告的,就知道原因了。而我却晕了一下午。

我一点点的跟踪调试,出错的位置不是在axis2中,而是在axiom2中。我自己写段代码查看那个出错的类是不是符合java bean规范,结果一切都正常啊。axis2从我的类中获取bean信息,然后交给axiom2生成xml.axiom在往xml中添加element的时候出错了。于是我就拼命的往axiom2里面跟,代码好多,好茫然啊。直到实在没有勇气再跟下去,就搜了下这个错误。发现,无非就是axiom/axis在org.apache.xxx包内,而我同事的那个类声明的时候没有加public。oh。。。。于是是可以通过java bean接口获取类的各种信息,但是,没有权限通过read/write accessor去操作该类的对象。于是就出错了嘛。而由于这个对象是我创建好返回给它的,所以出错时不是说无法创建对象,而是说无法访问该对象的某个函数。我开始一直以为是某个成员变量忘了加getter或者setter。

最近精神状态真是不好,本来以为没啥不会影响到工作。结果,嗯…………饿死了!

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥