先介绍下背景:
环境是是web环境,tomcat7.x,项目中需要使用外部一个sdk(一个jar包)作为client去访问外部server做认证,sdk提供了配置propery来指定一个连接server用的class,这个class需要实现包中XXXHelper接口。包中用一个xxxProvider.class来反射创建配置class对象。
但是包中使用的是class.ForName("package.className"),每次都报ClassNotFoundException。
解决办法1 只有放在这个jar包中才可以
解决办法2
后来反编译替换创建对象的xxxProvider, 将class.ForName换成下面的就好了。
Thread.currentThread().getContextClassLoader().loadClass($YOUR_CLASS_NAME)
这种情况需要和提供sdk的团队沟通去修改。
通过对比加载实例所用的classLoader和xxxProvider的classLoader发现,创建实例成功的是使用WebappClassLoader(Thread.currentThread().getContextClassLoader())而xxxProvider使用的是StandardClassLoader, WebappClassLoader是StandardClassLoader子加载器,根据类加载机制,StandardClassLoader不能加载这个类。
分享到:
相关推荐
以下情景是很多Java开发人员经常碰到的:在开发,调试阶段,通过在CLASSPATH中设置第三方的jar包路径,自己编写的class工作正常.开发完毕,部署的时候,将开发的class打成一个可执行jar包,会发现通过Class.forName...
常用中的读取xml 文件方式有jom4j 和 使用jdom来读取 mxl 文件。里面包含的jar 文件有 jdom 和 dom4j 的jar 文件。
Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.Access...
java发布wsdl部署到was 8.5报错的时候引入的jar包,比如如下情况: Caused by: java.lang.NoClassDefFoundError: com.sun.org.apache.xml.internal.resolver.CatalogManager at ...
当flink on yarn模式运行时,发生如下异常信息,需要将压缩包中的4个依赖jar包放入flink安装路径下的lib目录下。 Exception in thread "main" java.lang.NoClassDefFoundError: ...
java 9 中引入了模块的概念,默认情况下,Java SE中将不再包含java EE 的Jar包 而在 java 6/7 / 8 时关于这个API 都是捆绑在
在操作excel表格时,因为存在Excel2003和Excel2007两种版本的excel表格,所有如果jar包引入不够,会报一些异常,如: 执行到这一样时:new XSSFWorkbook(stream); 异常:Caused by: java.lang....
java 找不到指定类时发生的异常(ClassNotFoundException) java 找不到指定类时发生的异常(ClassNotFoundException)
本地运行报NoSuchMethodError,ClassNotFoundException。明明在依赖里有这个Jar包啊。怎么运行不了!? 项目中明明定义着某个jar包版本为2.0.2,怎么打包之后变成2.5.0了!? A项目引xxx.jar包运行好好的,B项目同样...
ClassNotFoundException终极解决办法 完美解决ClassNotFoundException,jar包在线查找库,在线下载库
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet at org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1680) 严重: Servlet /LogMess ...
JSON转化时出现 java.lang.ClassNotFoundException: net.sf.ezmorph.MorpherRegistry
dolphinscheduler安装包和mysql的jdbc连接jar包
javax依赖包,还有四个jar包。用于解决高版本jdk提示AVA.LANG.CLASSNOTFOUNDEXCEPTION: JAVAX.XML.BIND.JAXBEXCEPTION。使用方法在博文里。直接把包放在lib文件夹下即可。
"java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver" 解决方案 [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket. 解决了jsp连接 sql server 2000的问题
当一个项目使用的jar包较多时,代码经常在运行的时候抛出异常:java.lang.NoSuchMethodException,java.lang.ClassNotFoundException,基本是存在多个jar包包含相同的class类文件导致的,运行期引用的class由于版本...
适用SQL Server 2016版本的数据库加载驱动包——sqljdbc42.jar
Caused by: java.lang.ClassNotFoundException: pxb.android.dex2jar.v3.Main at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java...
1)msm1.6.5依赖了Couchbase,需要添加couchbase-client的jar包,否则启动会报:java.lang.NoClassDefFoundError:com/couchbase/client/CouchbaseClient。 2)Tomcat6和Tomcat7使用不同msm支持包:memcached-...
hive-jdbc-1.1.0-cdh5.4.5-standalone.jar Caused by: java.sql.SQLException: java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver at com.trs.gateway.commons.hive.HiveFeature.getConnection...