设为首页 收藏本站
查看: 3172|回复: 0

[经验分享] Caused by: javax.security.auth.login.LoginException: unable to find LoginModule

[复制链接]

尚未签到

发表于 2017-5-27 06:28:45 | 显示全部楼层 |阅读模式
  首先说下出现这个错误的环境配置吧:aix小型机安装tomcat,(配有ibm专有的jdk,1.6),hadoop(1.0.4)集群,linux:redhat,jdk是oracle的1.6。出现上面的错误信息;上网查了下,发现也有相同的错误出现:http://mail-archives.apache.org/mod_mbox/hadoop-user/201208.mbox/%3COF2E935E40.56BFE6E6-ON85257A64.004BB391-85257A64.004BF20E@us.ibm.com%3E,上面说是大概意思是IBM的jdk有特殊的LoginModules,可能和hadoop的不匹配,可以看到下面的

UserGroupInformation.java中的源代码:
  

private static String getOSLoginModuleName() {
262     if (System.getProperty("java.vendor").contains("IBM")) {
263       return windows ? "com.ibm.security.auth.module.NTLoginModule"
264        : "com.ibm.security.auth.module.LinuxLoginModule";   
265     } else {
266       return windows ? "com.sun.security.auth.module.NTLoginModule"
267         : "com.sun.security.auth.module.UnixLoginModule";
268     }
269   }
270
private static Class<? extends Principal> getOsPrincipalClass() {
274     ClassLoader cl = ClassLoader.getSystemClassLoader();
275     try {
276       if (System.getProperty("java.vendor").contains("IBM")) {
277         if (windows) {
278           return (Class<? extends Principal>)
279             cl.loadClass("com.ibm.security.auth.UsernamePrincipal");
280         } else {
281           return (Class<? extends Principal>)
282             (System.getProperty("os.arch").contains("64")
283              ? cl.loadClass("com.ibm.security.auth.UsernamePrincipal")
284              : cl.loadClass("com.ibm.security.auth.LinuxPrincipal"));
285         }
286       } else {
287         return (Class<? extends Principal>) (windows
288            ? cl.loadClass("com.sun.security.auth.NTUserPrincipal")
289            : cl.loadClass("com.sun.security.auth.UnixPrincipal"));
290       }
291     } catch (ClassNotFoundException e) {
292       LOG.error("Unable to find JAAS classes:" + e.getMessage());
293     }
294     return null;
295   }
  


上面红色字体的部分在ibm的jdk里面并没有发现,所以直接报错说那个LinuxLoginModule找不到,那么怎么办呢?可以考虑下把这两个类替换掉:

在ibm jdk的api中:  可以看到这两个类:
   DSC0000.jpg

直接用上面的两个类去替换前面红色部分的类就可以了。
  

  替换完成之后要怎么做呢?
  1.使用linux系统,在eclipse的java工程中导入hadoop的所有包,并把上面的文件放入src下面,直接保存;
  2. 打开bin下面的文件,查找到 UserLoginInformation开头的类,使用linux系统的工具把hadoop-core-1.0.4.jar里面相应的类替换掉;
  3. 把hadoop集群所有的hadoop-core-1.0.4.jar用上面得到的替换掉;
  做完上面的,基本应该就ok了,这样再测试一下,看是否ok。
  最后,声明一下,这个还没有经过博主测试,只是一个想法。
  

  


分享,快乐,成长





转载请注明出处:http://blog.csdn.net/fansy1990

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-381440-1-1.html 上篇帖子: [IT最前沿--有点道理] IBM市值15年来首次超越微软 下篇帖子: IBM洽购Sun对Java走势和数据库开发的影响
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表