开发过程中,遇到java.lang.ClassNotFoundException: com.icbc.api.core.ApiRequest,这个错误,但是查看过程中发现所需要的jarbao均已经导入到项目中了,至于为什么会报错,下面是我的处理过程。
处理方式一:将jar包放到tomcat下的lib目录下。
方式一参考自:https://blog.csdn.net/s1040342522/article/details/60756012
但是这种方法,对于我自己的项目并没有解决,java.lang.ClassNotFoundException的问题虽然已经解决,但是编译完成后调用的时候又会报新的错误:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
log4j:ERROR A "org.apache.log4j.ConsoleAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
log4j:ERROR [java.net.URLClassLoader@238a47] whereas object of type
log4j:ERROR "org.apache.log4j.ConsoleAppender" was loaded by [WebappClassLoader
context: /WeixinDataProvider
delegate: false
----------> Parent Classloader:
java.net.URLClassLoader@238a47
].
log4j:ERROR Could not instantiate appender named "CONSOLE".
log4j:ERROR A "org.apache.log4j.DailyRollingFileAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
log4j:ERROR [java.net.URLClassLoader@238a47] whereas object of type
log4j:ERROR "org.apache.log4j.DailyRollingFileAppender" was loaded by [WebappClassLoader
context: /WeixinDataProvider
delegate: false
----------> Parent Classloader:
java.net.URLClassLoader@238a47
].
log4j:ERROR Could not instantiate appender named "Druid".
log4j:ERROR A "org.apache.log4j.DailyRollingFileAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
log4j:ERROR [java.net.URLClassLoader@238a47] whereas object of type
log4j:ERROR "org.apache.log4j.DailyRollingFileAppender" was loaded by [WebappClassLoader
context: /WeixinDataProvider
delegate: false
----------> Parent Classloader:
java.net.URLClassLoader@238a47
].
log4j:ERROR Could not instantiate appender named "Druid".
log4j:ERROR A "org.apache.log4j.DailyRollingFileAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
log4j:ERROR [java.net.URLClassLoader@238a47] whereas object of type
log4j:ERROR "org.apache.log4j.DailyRollingFileAppender" was loaded by [WebappClassLoader
context: /WeixinDataProvider
delegate: false
----------> Parent Classloader:
java.net.URLClassLoader@238a47
].
log4j:ERROR Could not instantiate appender named "Druid".
log4j:ERROR A "org.apache.log4j.DailyRollingFileAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
log4j:ERROR [java.net.URLClassLoader@238a47] whereas object of type
log4j:ERROR "org.apache.log4j.DailyRollingFileAppender" was loaded by [WebappClassLoader
context: /WeixinDataProvider
delegate: false
----------> Parent Classloader:
java.net.URLClassLoader@238a47
].
log4j:ERROR Could not instantiate appender named "Druid".
log4j:ERROR A "org.apache.log4j.DailyRollingFileAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
log4j:ERROR [java.net.URLClassLoader@238a47] whereas object of type
log4j:ERROR "org.apache.log4j.DailyRollingFileAppender" was loaded by [WebappClassLoader
context: /WeixinDataProvider
delegate: false
----------> Parent Classloader:
java.net.URLClassLoader@238a47
].
log4j:ERROR Could not instantiate appender named "Druid".
log4j:ERROR A "org.apache.log4j.DailyRollingFileAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
log4j:ERROR [java.net.URLClassLoader@238a47] whereas object of type
log4j:ERROR "org.apache.log4j.DailyRollingFileAppender" was loaded by [WebappClassLoader
context: /WeixinDataProvider
delegate: false
----------> Parent Classloader:
java.net.URLClassLoader@238a47
].
log4j:ERROR Could not instantiate appender named "Druid".
截图如下:
虽然不影响程序的正常调用,但是问题还是没有解决。
处理方式二:Deployment Assembly
java.lang.ClassNotFoundException:xxx
一般情况是缺包了 然后去看配置
如上图 ,看到这里都有包, 也没什么问题啊,
Build path 下面source选项配置的是项目编译时需要扫描的文件,其中output folder表明的是.class编译输出的根目录。
Web Deployment Assembly是eclipse中的发布路径设置,DeployPath表示每个资源发布之后的文件路径
即build path 是开发编译时用的,而deployment assembly 是部署时读取的信息。
问题解决: 在 “Deployment Assembly” 点击 add
点击 next
添加后 如下图 表示 添加成功
重启项目, 问题解决!
总结: Deployment Assembly 也就是部署的意思
这里选择添加jar , 并部署到你 项目发布的文件夹下。
附:
如何查看项目部署位置是否有jar 包。
- 右击项目:
点击 “browse Deployment Location”
即 浏览 项目部署位置。
一般 在项目的 WEB-INF 下的 lib 文件夹下 可看到 项目的所有jar 包。
方式二转载自:https://blog.csdn.net/fanbaodan/article/details/87638808