GVKun编程网logo

升级到Tomcat 8时发生ClassNotFoundException(tomcat升级到高版本后起不来)

17

本文将带您了解关于升级到Tomcat8时发生ClassNotFoundException的新内容,同时我们还将为您解释tomcat升级到高版本后起不来的相关知识,另外,我们还将为您提供关于Caused

本文将带您了解关于升级到Tomcat 8时发生ClassNotFoundException的新内容,同时我们还将为您解释tomcat升级到高版本后起不来的相关知识,另外,我们还将为您提供关于Caused by: java.lang.ClassNotFoundException: com.google.protobuf.ServiceException、ClassNotFoundException、ClassNotFoundException: Cannot find class: GeneratorConfig、ClassNotFoundException: JspException的实用信息。

本文目录一览:

升级到Tomcat 8时发生ClassNotFoundException(tomcat升级到高版本后起不来)

升级到Tomcat 8时发生ClassNotFoundException(tomcat升级到高版本后起不来)

我最近将NetBeans
IDE从v7.3升级到了v8,突然之间,我的应用程序在连接到DB时在服务器启动时抛出了异常。这两个IDE版本之间的唯一区别是,后者版本使用的是Tomcat
8。

异常日志:

javax.naming.NamingException: Could not load resource factory class [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]    at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:82)    at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)    at org.apache.naming.NamingContext.lookup(NamingContext.java:841)    at org.apache.naming.NamingContext.lookup(NamingContext.java:152)    at org.apache.naming.NamingContext.lookup(NamingContext.java:829)    at org.apache.naming.NamingContext.lookup(NamingContext.java:152)    at org.apache.naming.NamingContext.lookup(NamingContext.java:829)    at org.apache.naming.NamingContext.lookup(NamingContext.java:152)    at org.apache.naming.NamingContext.lookup(NamingContext.java:829)    at org.apache.naming.NamingContext.lookup(NamingContext.java:166)    at org.apache.naming.SelectorContext.lookup(SelectorContext.java:157)    at javax.naming.InitialContext.lookup(InitialContext.java:411)    at com.istore.core.listeners.AppContextListener.initdb(AppContextListener.java:44)    at com.istore.core.listeners.AppContextListener.contextInitialized(AppContextListener.java:27)    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4738)    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5158)    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:726)    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:702)    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:697)    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:579)    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:455)    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1554)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)    at java.lang.reflect.Method.invoke(Method.java:606)    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)    at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1428)    at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:885)    at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:343)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:301)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)    at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:615)    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:74)    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1015)    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:652)    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1575)    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1533)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)    at java.lang.Thread.run(Thread.java:724)Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1284)    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1132)    at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:80)    ... 58 more

META-INF / context.xml

<!-- PostgreSQL Datasource --><Resource auth="Container" driverClassName="org.postgresql.Driver" factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" maxActive="50" maxIdle="10" maxWait="-1" name="jdbc/mydb" type="javax.sql.DataSource" url="jdbc:postgresql://myorg.corp.net:5432/mydb" username="abc" password="def" />

请指导。

答案1

小编典典

在Tomcat 7和Tomcat 8之间,默认工厂的名称已更改。几个属性名称也已更改。这是在Tomcat 8中从DBCP 1.x切换到DBCP
2.x的结果。您需要在META-INF / context.xml文件中执行以下操作:

<!-- PostgreSQL Datasource --><Resource auth="Container"          driverClassName="org.postgresql.Driver"          factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory"          maxTotal="50"          maxIdle="10"          maxWaitMillis="-1"          name="jdbc/mydb"          type="javax.sql.DataSource"          url="jdbc:postgresql://myorg.corp.net:5432/mydb"          username="abc"          password="def" />

由于默认情况下将此工厂用于类型的资源,因此javax.sql.DataSource您可以将所有属性放在一起。其他更改是:

maxActive -> maxTotalmaxWait   -> maxWaitMillis

Caused by: java.lang.ClassNotFoundException: com.google.protobuf.ServiceException

Caused by: java.lang.ClassNotFoundException: com.google.protobuf.ServiceException

@杨桃兄弟 你好,想跟你请教个问题:

<dependency>
   <groupId>org.apache.hadoop</groupId>
   <artifactId>hadoop-client</artifactId>
   <version>2.7.2</version>
   <!-- <version>2.2.0</version>-->
</dependency>
<dependency>
   <groupId>org.apache.hadoop</groupId>
   <artifactId>hadoop-common</artifactId>
   <version>2.7.2</version>
</dependency>
<dependency>
   <groupId>org.apache.hadoop</groupId>
   <artifactId>hadoop-hdfs</artifactId>
   <version>2.7.2</version>
</dependency>

<dependency>
   <groupId>org.apache.hadoop</groupId>
   <artifactId>hadoop-mapreduce-client-core</artifactId>
   <version>2.7.2</version>
</dependency>

 

我pom 文件里的,一直报这个错

ClassNotFoundException

ClassNotFoundException

代码报错:

java.lang.ClassNotFoundException: com.tujia.core.filter.SecurityFilter
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
	at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:527)
	at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:509)
	at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:137)
	at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4775)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5452)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)


找不到类,但是,在我的代码中,并没有这个类的引用。

用 eclipse 的全局搜索,发现,在 web.xml 中,有注释,

<filter><!-- com.tujia.core.filter.SecurityFilter -->
		<filter-name>securityFilter</filter-name>
		<filter-class>com.tujia.corelogin.filter.SecurityFilter</filter-class>
		<init-param>
			<param-name>ignores</param-name><!-- /tbk, -->
			<param-value>/app/appNavs,/app/download,/tulogin,/tulogout,/static,/noauthority,/img/select</param-value>
		</init-param>
		<!-- <init-param> 
			<param-name>checks</param-name>/tbk,
			<param-value>/,/app/,/video/</param-value>
		</init-param> -->
	</filter>
	
	 <filter-mapping>
		<filter-name>securityFilter</filter-name>
		<url-pattern>*</url-pattern>
	</filter-mapping>
这句话是我已经注释掉的,但是,在 xml 中,并不是不编译,而是编译不执行,所以,会报错 classnotfound.
<!-- com.tujia.core.filter.SecurityFilter -->
类似的这种问题,在 jsp,xml 中,会有很多,因为在这些文件中,注释并不代表不编译。希望以后注意一下。

ClassNotFoundException: Cannot find class: GeneratorConfig

ClassNotFoundException: Cannot find class: GeneratorConfig

org.apache.ibatis.type.TypeException: Could not resolve type alias ''GeneratorConfig''.  Cause: java.lang.ClassNotFoundException: Cannot find class: GeneratorConfig
    at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:120)
    at org.apache.ibatis.builder.BaseBuilder.resolveAlias(BaseBuilder.java:149)
    at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:116)
    ... 135 common frames omitted
Caused by: java.lang.ClassNotFoundException: Cannot find class: GeneratorConfig
    at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:200)
    at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:89)
    at org.apache.ibatis.io.Resources.classForName(Resources.java:261)
    at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:116)
    ... 137 common frames omitted

ClassNotFoundException: JspException

ClassNotFoundException: JspException

给这个问题耗上了, 我一定要把罪魁祸首找不来 找不出来不下班!!!
java.lang.ClassNotFoundException: JspException
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
	java.lang.Class.getDeclaredMethods0(Native Method)
	java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
	java.lang.Class.getDeclaredMethods(Class.java:1791)
	java.beans.Introspector$1.run(Introspector.java:1287)
	java.security.AccessController.doPrivileged(Native Method)
	java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:1285)
	java.beans.Introspector.getTargetMethodInfo(Introspector.java:1151)
	java.beans.Introspector.getBeanInfo(Introspector.java:402)
	java.beans.Introspector.getBeanInfo(Introspector.java:168)
	java.beans.Introspector.getBeanInfo(Introspector.java:229)
	java.beans.Introspector.<init>(Introspector.java:383)
	java.beans.Introspector.getBeanInfo(Introspector.java:168)
	org.apache.jasper.compiler.Generator$TagHandlerInfo.<init>(Generator.java:3943)
	org.apache.jasper.compiler.Generator$GenerateVisitor.getTagHandlerInfo(Generator.java:2209)
	org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1640)
	org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1539)
	org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376)
	org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2428)
	org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2434)
	org.apache.jasper.compiler.Node$Root.accept(Node.java:475)
	org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376)
	org.apache.jasper.compiler.Generator.generate(Generator.java:3489)
	org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:250)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:373)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	clap.bnLog.filter.BnLogFilter.doFilter(BnLogFilter.java:34)
	clap.authority.filter.FunOrgAuFilterServlet.doFilter(FunOrgAuFilterServlet.java:33)
	clap.authority.filter.FilterServlet.doFilter(FilterServlet.java:91)
	clap.frames.i18n.filter.LocalFilter.doFilter(LocalFilter.java:71)
	clap.authority.xss.XSSSecurityFilter.doFilter(XSSSecurityFilter.java:68)
	clap.frames.web.SetEncodingFilter.doFilter(SetEncodingFilter.java:33)


===== 19:44 更新 =====

问题终于解决了,但是为什么导致这样的问题还是没能找出来。不过发现这个问题还是因为个人的操作失误导致的,  自作自受啊, 下不为例以后就张姿势了。

说一下我的环境和编译、部署的流程:

环境: 

项目没有使用ant之类的编译工具,运行项目也没有使用IDE内置的容器运行。

而是使用IDE编译代码,再单独启动容器跑程序。 

而问题就出现在编译阶段,因为在IDE中classpath有问题,导致IDE编译没有正确完成,当IDE classpath问题解决了,再启动容器没有报错,也可以正常访问页面。结论就是编译的代码不完整,而不是缺少jar文件或者冲突。一切都是自己咎由自取,活该!

为什么代码编译不完整运行时抛这么奇怪的错误,这个结果还没有弄清楚明白,估计这个要看容器的类加载时肿么了一个回事了,暂且不说了,以后有空估计也不会去看了。如果哪位无聊可以研究下。

终于搞定了,可以继续推进工作了。撤~~~ 


  

今天关于升级到Tomcat 8时发生ClassNotFoundExceptiontomcat升级到高版本后起不来的分享就到这里,希望大家有所收获,若想了解更多关于Caused by: java.lang.ClassNotFoundException: com.google.protobuf.ServiceException、ClassNotFoundException、ClassNotFoundException: Cannot find class: GeneratorConfig、ClassNotFoundException: JspException等相关知识,可以在本站进行查询。

本文标签: