正好公司想要做一个门户网站系统,因此查询了一些开源项目,找到了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版本之后。本人选择的此种方法,问题顺利解决掉。
分享到:
相关推荐
tomcat-juli.jar 用于在tomcat启动报错时除错
在这种情况下,需要检查Tomcat服务器的配置文件,以确保所有的配置项都是正确的。 解决方案 要解决在Eclipse中部署Tomcat服务器时出现的问题,需要按照以下步骤进行: 1. 首先,需要确保Tomcat服务器的配置文件...
后面我把原先tomcat启动环境用的jdk1.7改为了本机安装的jdk1.8就不在报错。 具体过程: 在myeclipse中点击window→preference→在搜索框中输入Tomcat→选择安装的tomcat版本,我这里是选择Tomcat 7.x→点击JDK→在...
Tomcat报错,如: Can't load IA 32-bit .dll on a AMD 64-bit platform Can't load IA 64-bit .dll on a AMD 64-bit platform 都应该用x64里面的dll文件 不同的硬件平台需要与之对应的dll即可
Tomcat无法正常启动的解决办法 教你如何解决Tomcat无法正常启动 欢迎下载
tomcat启动报错,启动超时,找不到类文件四渡赤水打成不是的
解决dubbo-admin在jdk1.8下启动报错问题,需要下载dubbo源码修改问题重新编译打包发布,这里已经和重新编译。
然而,在使用过程中,用户可能会遇到Tomcat无法启动的问题。本文将详细探讨导致Tomcat启动失败的原因及相应的解决方法,帮助读者有效解决这一问题。 #### 一、常见原因分析 1. **JRE/JDK版本不兼容** - Tomcat的...
linux 版本的 tomcat 9.0.22和 tomcat 8.5.58 有的程序部署上去用9.0的会报错 比如调用钉钉 的发送接口 base64加密的 但是放到tomcat9.0会报错 8.5.58没问题linux 版本的 tomcat 9.0.22和 tomcat 8.5.58 有的程序...
在使用Apache Tomcat服务器时,有时会遇到启动异常的情况,其中一种常见的错误是`java.util.zip.ZipException`。这个异常通常表明在处理ZIP或JAR文件时遇到了问题,可能是因为文件损坏、格式不正确或者无法打开。在...
### Tomcat7启动或运行时报错:`java.lang.ClassCastException: org.apache.jasper.el.ELContextImpl` #### 问题概述 在使用Tomcat7部署Web应用的过程中,可能会遇到启动或者运行时出现以下错误提示: ``` java....
- 在Windows系统中,可以在系统属性中的“高级”选项卡下,点击“环境变量”,在系统变量中添加JAVA_HOME变量,并将其值设置为JDK的安装路径。 - 在Linux/Unix系统中,可以在`.bashrc`或`.profile`文件中添加以下...
如果此目录下只存在一个名为`techart.xml`的文件,而缺乏必要的Web应用配置文件(通常为`.xml`格式),那么Tomcat在启动时将无法识别和加载相应的Web应用,从而导致启动失败。正确做法是确保该目录下有对应于每个...
在 Tomcat 的 conf 目录下,我们需要建立 workers.properties 文件,并在文件中添加相应的配置参数。 三、APACHE 错误日志分析 在 APACHE 的错误日志文件中,我们可以看到一些错误信息,例如: * [warn] (OS 64) ...
这是因为Tomcat在更新应用时,会重新加载Web应用目录下的文件,而在这个过程中,静态资源文件如JavaScript、CSS、图片等可能会在短暂的时间内不可用,导致用户请求无法正常处理。这个问题对于开发环境尤其明显,因为...
在这个案例中,开发者遇到了端口8082被Java进程占用的情况,这阻碍了Tomcat的正常启动。 首先,开发者检查了操作系统中的进程,找到了占用8082端口的Java程序,并将其关闭。然而,关闭该进程后,Tomcat并未能成功...
NULL 博文链接:https://lionelxx777.iteye.com/blog/358193
tomcat 开机启动,dos窗口去掉,tomcat 开机启动,dos窗口去掉
5. **JAR文件缺失**:确保Struts2的核心库和其他依赖库都在Tomcat的类路径下。有时,某些特定的JAR文件可能在部署时被遗漏,如OGNL(Object-Graph Navigation Language)库,这是Struts2执行表达式语言的关键。 6. ...