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

[经验分享] GateIn在Tomcat下启动报错

[复制链接]

尚未签到

发表于 2017-1-30 12:28:05 | 显示全部楼层 |阅读模式
        正好公司想要做一个门户网站系统,因此查询了一些开源项目,找到了GateIn。先不说项目好坏,本文主要记录一下GateIn配置在Tomcat下启动时抛出的错误及解决的方法。
        先说一下运行环境,OS: Windows XP SP3, JDK:1.6.0, Tomcat为GateIn应用程序自带,应该为6.0.28。在启动GateIn应用的过程中需要通过命令行的方式运行 gatein.bat,这个需要注意一下。在console内输入"gatein.bat run"(不包括冒号),即可启动Tomcat。在启动的过程中抛出如下错误:
  严重: Cannot create the portal container 'portal' . ServletContext: org.apache.catalina.core.ApplicationContextFacade@150f0a7
java.lang.RuntimeException: Cannot instantiate component key=org.exoplatform.services.organization.idm.PicketLinkIDMService type=org.exoplatform.services.organization.idm.PicketLinkIDMServiceImpl found at jndi:/localhost/portal/WEB-INF/conf/organization/idm-configuration.xml
 at org.exoplatform.container.jmx.MX4JComponentAdapter.getComponentInstance(MX4JComponentAdapter.java:124)
 at org.exoplatform.container.management.ManageableComponentAdapter.getComponentInstance(ManageableComponentAdapter.java:68)
 at org.exoplatform.container.ConcurrentPicoContainer.getInstance(ConcurrentPicoContainer.java:400)
 at org.exoplatform.container.ConcurrentPicoContainer.getComponentInstancesOfType(ConcurrentPicoContainer.java:350)
 at org.exoplatform.container.CachingContainer.getComponentInstancesOfType(CachingContainer.java:111)
 at org.picocontainer.defaults.LifecycleVisitor.visitContainer(LifecycleVisitor.java:97)
 at org.exoplatform.container.ConcurrentPicoContainer.accept(ConcurrentPicoContainer.java:506)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.picocontainer.defaults.AbstractPicoVisitor.traverse(AbstractPicoVisitor.java:32)
 at org.picocontainer.defaults.LifecycleVisitor.traverse(LifecycleVisitor.java:63)
 at org.picocontainer.defaults.LifecycleVisitor.start(LifecycleVisitor.java:113)
 at org.exoplatform.container.ConcurrentPicoContainer.start(ConcurrentPicoContainer.java:453)
 at org.exoplatform.container.ExoContainer.start(ExoContainer.java:186)
 at org.exoplatform.container.PortalContainer.start(PortalContainer.java:595)
 at org.exoplatform.container.ExoContainer.start(ExoContainer.java:180)
 at org.exoplatform.container.RootContainer.createPortalContainer(RootContainer.java:338)
 at org.exoplatform.container.RootContainer.registerPortalContainer(RootContainer.java:212)
 at org.exoplatform.portal.application.PortalController.afterInit(PortalController.java:114)
 at org.exoplatform.container.web.AbstractHttpServlet.init(AbstractHttpServlet.java:72)
 at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
 at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
 at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4149)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4458)
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
 at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:630)
 at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:556)
 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:491)
 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1206)
 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:314)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
 at org.apache.catalina.core.StandardService.start(StandardService.java:516)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.reflect.InvocationTargetException
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
 at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
 at org.exoplatform.container.ExoContainer.createComponent(ExoContainer.java:321)
 at org.exoplatform.container.jmx.MX4JComponentAdapter.getComponentInstance(MX4JComponentAdapter.java:94)
 ... 47 more
Caused by: java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/E:/GateIn/lib/jaxb-impl-2.1.7.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.1 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.5.0/docs/guide/standards/)
 at com.sun.xml.bind.v2.model.impl.ModelBuilder.<clinit>(ModelBuilder.java:173)
 at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:422)
 at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:286)
 at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:139)
 at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:117)
 at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:188)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:132)
 at javax.xml.bind.ContextFinder.find(ContextFinder.java:286)
 at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)
 at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:337)
 at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:244)
 at org.picketlink.idm.impl.configuration.jaxb2.JAXB2IdentityConfiguration.createConfigurationMetaData(JAXB2IdentityConfiguration.java:129)
 at org.exoplatform.services.organization.idm.PicketLinkIDMServiceImpl.<init>(PicketLinkIDMServiceImpl.java:117)
 ... 53 more
2011-2-14 15:22:02 org.apache.catalina.startup.HostConfig deployDescriptor
  ------------------------------------------------------分割线--------------------------------------------------------------
  异常的原因可以看到:
  Caused by: java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/E:/GateIn/lib/jaxb-impl-2.1.7.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.1 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.5.0/docs/guide/standards/)

        解释一下,错误提示说的是“链接错误”,原因是启动类加载器预先加载了 JAXB 2.0 API。但是当前应用的RI(jaxb-impl-2.1.7.jar)需要的是JAXB 2.1 API。可以使用endorsed目录机制替换掉JAXB 2.0,使JAXB 2.1加载到类加载器重。笔者随后到GateIn的lib文件夹下面找到了jaxb-api-2.1.jar和jaxb-impl-2.1.7.jar。错误提示说impl包没有找到2.1版本的jar包,但2.1.jar的确存在lib文件夹下,为什么没有加载呢?或者说新版本的jar包为什么没有替换掉旧版本的jar包?
       在以下的链接中看到了一些提示,http://jaxb.java.net/guide/Migrating_JAXB_2_0_applications_to_JavaSE_6.html 。JavaSE 6 update 4之前,rt.jar包中集成了jaxb-api-2.0.jar。update4之后,JavaSE 6全部集成jaxb-api-2.1.jar。并提示了update4之前的解决方法。试了第一种,也就是在$JRE_HOME/lib/下面建立endorsed文件夹,然后拷贝jaxb-api-2.1.jar文件以替换旧版本文件。这种方法没有实质效果。在queue19的博客中找到了原因,http://queue19.iteye.com/blog/418748。如果是Tomcat 5.5,则新建文件路径为“Tomcat 5.5\common\endorsed”,如果是Tomcat 6.0,则新建路径为“Tomcat 6.0\endorsed”。(此处引用queue19文章内容,非本人撰写)
  
  还有一种方法就是将JDK 6版本升级,升级到updat4版本之后。本人选择的此种方法,问题顺利解决掉。
     

运维网声明 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-335329-1-1.html 上篇帖子: 《How Tomcat Works》翻译(5)之 日志 下篇帖子: 基于Tomcat容器的ActiveMQ简单实例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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