如何确定哪里使用到了 org.json.simple.JSONObject

ltolll 2018-07-09 12:47:30
在开发机上tomcat正常启动.
整个工程用户定义类中都没有用到json.simple.
工程放到服务器上tomcat启动失败, 查日志:

09-Jul-2018 08:00:59.197 SEVERE [Catalina-startStop-1] org.apache.catalina.core.ContainerBase.startInternal A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/pb4]]
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:917)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:871)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399)
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.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/pb4]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
... 6 more
Caused by: java.lang.NoClassDefFoundError: org/json/simple/JSONObject
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.getDeclaredMethods(Class.java:1975)
at org.apache.catalina.util.Introspection.getDeclaredMethods(Introspection.java:127)
at org.apache.catalina.startup.WebAnnotationSet.loadMethodsAnnotation(WebAnnotationSet.java:273)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:133)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:65)
at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:334)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:774)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:305)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5065)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 6 more
Caused by: java.lang.ClassNotFoundException: org.json.simple.JSONObject
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157)
... 20 more


日志中"... 6 more", "... 20 more"应该是重要信息, 但是没显示出来.
在工程中使用全局查找"simple"没有找到.
如何定位错误?
...全文
587 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ltolll 2018-07-25
  • 打赏
  • 举报
回复
gradle生成war文件的时候采用旧的类(其中引用了json.simple). 还是gradle没有搞好, 直接手工复制新的class
maradona1984 2018-07-09
  • 打赏
  • 举报
回复
看看依赖树吧,或许存在providedCompile吧...
ltolll 2018-07-09
  • 打赏
  • 举报
回复
引用 3 楼 maradona1984 的回复:
[quote=引用 2 楼 ltolll 的回复:]
[quote=引用 1 楼 qq593467574 的回复:]
你项目里应该是引用了JSON.simple 的jar包



已经确认多次,没有引用JSON.simple, 而且上文说了, 全局搜索(Ctrl+H)"simple"无结果.

假设说我真的引用了JSON.simple, 我要怎么把它找到呢?[/quote]

这个错就是因为你没有导入这个jar,你导入之后有可能就好了
你代码没用到不代表你依赖的jar里没用到
这也是maven解决以前工程依赖的一个痛点[/quote]

我的工程就是通过Gradle管理依赖的, 如果JSON.simple被依赖肯定会被下载吧?
build.gradle如下:

/*
* pb v4.0开始使用Gradle构建
*/

// web 工程的插件
apply plugin: 'war'
apply plugin: 'eclipse-wtp'

tasks.withType(JavaCompile){
options.encoding = "UTF-8"
}

repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
// 从jcenter仓库下载依赖包
jcenter()
}

dependencies {
compile group: 'org.apache.tomcat', name: 'tomcat-servlet-api', version: '8.0.48'
compile group: 'org.apache.tomcat', name: 'tomcat-jsp-api', version: '8.0.48'

compile group: 'org.apache.poi', name: 'poi', version: '3.17'

// https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml
compile group: 'org.apache.poi', name: 'poi-ooxml', version: '3.17'

compile 'javax.servlet:javax.servlet-api:3.1.0'

compile group: 'com.google.code.gson', name: 'gson', version: '2.8.2'

// 用于压缩图片
compile group: 'net.coobird', name: 'thumbnailator', version: '0.4.8'

compile group: 'commons-logging', name: 'commons-logging', version: '1.2'

compile group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.2.1'

}



maradona1984 2018-07-09
  • 打赏
  • 举报
回复
引用 2 楼 ltolll 的回复:
[quote=引用 1 楼 qq593467574 的回复:]
你项目里应该是引用了JSON.simple 的jar包



已经确认多次,没有引用JSON.simple, 而且上文说了, 全局搜索(Ctrl+H)"simple"无结果.

假设说我真的引用了JSON.simple, 我要怎么把它找到呢?[/quote]

这个错就是因为你没有导入这个jar,你导入之后有可能就好了
你代码没用到不代表你依赖的jar里没用到
这也是maven解决以前工程依赖的一个痛点
ltolll 2018-07-09
  • 打赏
  • 举报
回复
引用 1 楼 qq593467574 的回复:
你项目里应该是引用了JSON.simple 的jar包



已经确认多次,没有引用JSON.simple, 而且上文说了, 全局搜索(Ctrl+H)"simple"无结果.

假设说我真的引用了JSON.simple, 我要怎么把它找到呢?
qq593467574 2018-07-09
  • 打赏
  • 举报
回复
你项目里应该是引用了JSON.simple 的jar包

58,452

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧