当前位置: 首页 > 知识库问答 >
问题:

Apache Tiles失败并出错,但仅当日志级别设置大于Info?

曾飞沉
2023-03-14

我们有一个运行在Tomcat 7.0.55上并使用Apache Tiles 2.1.4的Tomcat应用程序。

编辑:如果这是发生的所有时间,我会理解它,而不是在这里张贴。这是一个奇怪的、值得堆栈溢出的问题,原因有二:

1)我们根本没有使用Portlet。任何地方都不应该调用Portlet代码
2)作为(1)的推论,当日志级别设置为低于DEBUG时,应用程序运行良好。只有当日志级别设置为DEBUG、TRACE或All时,才会发生此错误。

2015-03-27 07:18:44,453 INFO  [localhost-startStop-1] org.apache.tiles.context.AbstractTilesApplicationContextFactory - Initializing Tiles2 application context. . .
2015-03-27 07:18:44,460 INFO  [localhost-startStop-1] org.apache.tiles.context.AbstractTilesApplicationContextFactory - Finished initializing Tiles2 application context.
2015-03-27 07:18:44,472 INFO  [localhost-startStop-1] org.apache.tiles.factory.TilesContainerFactory - Initializing Tiles2 container. . .
2015-03-27 07:18:44,538 ERROR [localhost-startStop-1] org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tilesConfigurer' defined in ServletContext resource [/WEB-INF/spring/webmvc-context.xml]: Invocation of init method failed; nested exception is org.apache.tiles.portle
t.context.NotAPortletEnvironmentException: Cannot access portlet classes
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1482)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
        at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4992)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5490)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.tiles.portlet.context.NotAPortletEnvironmentException: Cannot access portlet classes
        at org.apache.tiles.portlet.context.PortletTilesRequestContextFactory.<init>(PortletTilesRequestContextFactory.java:71)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
        at java.lang.Class.newInstance(Class.java:438)
        at org.apache.tiles.context.ChainedTilesRequestContextFactory.init(ChainedTilesRequestContextFactory.java:100)
        at org.apache.tiles.factory.TilesContainerFactory.storeContainerDependencies(TilesContainerFactory.java:429)
        at org.apache.tiles.factory.TilesContainerFactory.initializeContainer(TilesContainerFactory.java:368)
        at org.apache.tiles.factory.TilesContainerFactory.createTilesContainer(TilesContainerFactory.java:287)
        at org.apache.tiles.factory.TilesContainerFactory.createContainer(TilesContainerFactory.java:231)
        at org.apache.tiles.startup.BasicTilesInitializer.createContainer(BasicTilesInitializer.java:117)
        at org.apache.tiles.startup.BasicTilesInitializer.initialize(BasicTilesInitializer.java:53)
        at org.springframework.web.servlet.view.tiles2.TilesConfigurer.afterPropertiesSet(TilesConfigurer.java:339)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1541)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1479)
        ... 25 more
Caused by: java.lang.NoClassDefFoundError: javax/portlet/PortletRequest
        at org.apache.tiles.portlet.context.PortletTilesRequestContextFactory.<init>(PortletTilesRequestContextFactory.java:66)
        ... 40 more
Caused by: java.lang.ClassNotFoundException: javax.portlet.PortletRequest
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        ... 41 more

共有1个答案

祁彬
2023-03-14

原因:java.lang.NoClassDeffounderRor:javax/portlet/portletRequest

NoClassDefoundErr与运行时丢失的类文件相关,而该文件在编译时可用。在你的情况下,汤猫。如果您正在使用maven,请确保您的依赖范围覆盖运行时。war中的lib目录应该有jar。可能包括以下内容:

http://mvnrepository.com/artifact/javax.portlet/portlet-api/2.0

原因:org.apache.tiles.portlet.context.NotaPortletEnvironmentException:无法访问org.apache.tiles.portlet.context.PortletIleRequestContextFactory上的portlet类。(PortletIleRequestContextFactory.java:71)

原因:java.lang.NoClassDeffounderRror:javax/portlet/portletRequest at org.apache.tiles.portlet.context.portletilesRequestContextFactory.(portletilesRequestContextFactory.java:66)

 类似资料:
  • 问题内容: 我目前正在使用log4j的项目中。我正在运行一个测试用例(junit),并希望将日志级别设置为跟踪,以便我可以查看所有值是否正确。在项目中使用日志记录的类包含如下一行: 并使用类似这样的命令进行实际调试 我以前从未使用过log4j,有人知道我该如何仅为测试用例更改日志级别,最好仅通过在Eclipse的运行配置对话框中定义一个参数即可。 问题答案: 使用另一个配置文件 也许您可以指向另一

  • 我在spring应用程序中使用log4j2作为我的日志工具。我想为特定的库/包设置不同于根目录的日志级别。例如,我希望< code>org.springframework为INFO,而< code>com.google为WARN。我在< code>log4j2.properties中找到了这个: 我不明白是什么意思?我一直在log4j2文档中找到它,但没有解释那是什么或意味着什么。 如何为特定包添

  • 我在我的项目中进行了强制日志记录,并且我很难抑制我不想要的日志记录语句。 还有,我在使用log4j时看不到这些记录器。我正在尝试学习Logback,因为我已经被指派来评估它作为团队可能的升级。

  • 我在Spring Boot(1.3M1)中使用了application.properties,并开始将其转换为yaml文件,因为它变得越来越复杂。 但我在将其转换为YAML时遇到了问题:

  • 我有以下错误,当我建立我的反应原生应用程序的Android(iOS没有问题)。 错误:清单合并失败,有多个错误,请参见日志 当我在发布模式下生成时,这会导致一个真正的问题(调试中的应用程序没有问题),因为它会为我的发布生成生成以下清单文件: AndroidManifest。xml(在app/src/release/中) 我知道有很多关于这方面的问题,但它们对我的情况并没有真正的帮助,因为如果我遵循

  • 在Logback中,可以使用setLevel()方法更改记录器的日志级别。但是在Logback中,由于记录器是单例的,setLevel()方法的调用会影响到使用相同记录器的所有其他线程。 现在我有一个在web应用程序中使用的类,如下所示: 在Spring ApplicationConfig.xml中: 我想记录从insertOne方法调用insertRecord。另一方面,在insertMany方