Saiku实力挖坑记!!!!!!!
我可真真真的是个挖坑小能手呀!不知道你们有没有遇到过这个异常: Enclosure class mondrian.olap.MondrianDef not found
如果你编译过Mondrian或者尝试过编译Mondrian源码就会知道 MondrianDef这个类是ant命令生成的一个类,如果是自己整合Mondrian与Saiku,缺失这个类很有可能是Mondrian没有编译成功!
>>>先给出整体异常信息的截图:
>>> 异常解析
整体的意思就是说 无发连接到 footmart(这个saiku/mondrian的示例数据信息 作为demo展示的 一般来说不会出错),是由于 org.eigenbase.xom.AssertFailure异常了,org.eigenbase.xom属于eigenbase-xom.jar包, eigenbase-xom.jar包中找不到 MondrianDef类
再想想我之前都运行的好好的,怎么突然就报这个错了呢,saiku上都显示不了任何cube信息了。然后我就开始慌张,害怕自己想玩Mondrian,没玩成功反而把saiku给玩坏了。(本来是想本地编译Mondrian的,所以下了好几个版本的源码,最后找了个maven分支的mondrian,下载了Ant配置了环境变量,但是一直没ant成功,最后就暂时放弃了...)
在试图编码mondrian的时候我做过一个很愚的事情,就是在jdk下面添加了jar包。
具体操作是这样的: 使用ant命令编译mondrian的时候,老是报错 找不到 eigenbase-xom.jar包下的某个类,然后我就开始上网搜,网友给出建议说将找不到的jar丢在 jdk1.8.0_191\jre\lib\ext 目录下就能找到了,结果我就信了... 就把包丢进去了,
后来还是没成功,我当时也忘记删掉ext目录下新增的eigenbase-xom.jar了,就开始了别的事情.... 再次重启saiku就出现了以上异常:Enclosure class mondrian.olap.MondrianDef not found
>>>解决方案
将 jdk1.8.0_191\jre\lib\ext 目录下自己手动新增的jar删除,就可以正常启动saiku了!!!
这里就在告诉我们千万不要随便在 jdk1.8.0_191\jre\lib\ext 目录下增加我们自己的jar包,具体原因估计还要去了解一下JVM类加载机制。
这里就是先加载了ext包下的 eigenbase-xom.jar,但是其他引用的jar又还在项目中,所以就抛了异常!!!