follow 开源项目关于NoClassDefFoundError错误的解决方法

【0】README
0.1)本文旨在po出当我们follow open projects 的时候,遇到一些在open API中不存在(NoClassDefFoundError)的类时的解决方法;

【1】problem+solution:
1.1)problem:一般case下,我们是 从低version 到高version的剖析project,而低version 可能年代久远而没有了相应的api 类,而这时如果我们编译该程序就可能会出现 NoClassDefFoundError;
Attention)当然了,如果可以download到相应的 包含该低version 下的class文件,直接使用带有该class文件的open jar包即可,不用这么麻烦;
1.2)solution:上google or baidu ,download 相关类的源代码,然后再手动编译该源代码,注意要手动创建它所属的包;
1.3)看个荔枝:如遇到错误java.lang.NoClassDefFoundError: org/apache/naming/JndiPermission,解决方法如下:
step1)下载org/apache/naming/JndiPermission.java 源代码;
step2)手动建立层级文件夹 org/apache/naming/,并将 JndiPermission.java 文件放进该dir;
step3)javac 编译得到JndiPermission的class文件;(stage 1 over.)
step4)将原有的open jar 包解压(如catalina.jar 解压为 catalina);
step5)将上述的class 文件放入到 解压后的文件目录下(注意其包名要对应);
step6)最后,再将上述文件夹打jar包(catalina -》 catalina.jar -》Bingo.)
补充)打jar包命令:进入 catalina dir,jar cvf catalina.jar ./;

Attention)再次注意,能download带有低version class文件的open jar包再好不过,直接用它即可,如果不能download的话,可能就需要像本文这种比较麻烦的solution了;

【2】in following apache,我遇到的 NoClassDefFoundError 错误及其解决方法的console info 如下:
E:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\src>java -cp .;lib/servlet.jar;lib/catalina_4_1_24.jar;lib/catalina-5.5.4.jar;lib/naming-resources.jar;lib/naming-common.jar;lib/commons-collectio
ns.jar;lib/catalina.jar;E:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\webroot com.tomcat.chapter8.startup.Bootstrap
HttpConnector Opening server socket on all host IP addresses
HttpConnector[8080] Starting background thread
WebappLoader[/myApp]: Deploying class repositories to work directory E:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\src\work\_\_\myApp
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/catalina/loader/Extensionat org.apache.catalina.loader.WebappClassLoader.findAvailable(WebappClassLoader.java:744)at org.apache.catalina.loader.WebappLoader.validatePackages(WebappLoader.java:1284)at org.apache.catalina.loader.WebappLoader.start(WebappLoader.java:682)at org.apache.catalina.core.StandardContext.start(StandardContext.java:3530)at com.tomcat.chapter8.startup.Bootstrap.main(Bootstrap.java:69)
Caused by: java.lang.ClassNotFoundException: org.apache.catalina.loader.Extensionat java.net.URLClassLoader.findClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)... 5 moreE:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\src>java -cp .;lib/servlet.jar;lib/catalina_4_1_24.jar;lib/catalina-5.5.4.jar;lib/naming-resources.jar;lib/naming-common.jar;lib/commons-collectio
ns.jar;lib/catalina.jar;E:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\webroot com.tomcat.chapter8.startup.Bootstrap
HttpConnector Opening server socket on all host IP addresses
HttpConnector[8080] Starting background thread
WebappLoader[/myApp]: Deploying class repositories to work directory E:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\src\work\_\_\myApp
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/catalina/loader/Extensionat org.apache.catalina.loader.WebappClassLoader.findAvailable(WebappClassLoader.java:744)at org.apache.catalina.loader.WebappLoader.validatePackages(WebappLoader.java:1284)at org.apache.catalina.loader.WebappLoader.start(WebappLoader.java:682)at org.apache.catalina.core.StandardContext.start(StandardContext.java:3530)at com.tomcat.chapter8.startup.Bootstrap.main(Bootstrap.java:69)
Caused by: java.lang.ClassNotFoundException: org.apache.catalina.loader.Extensionat java.net.URLClassLoader.findClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)... 5 moreE:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\src>java -cp .;lib/servlet.jar;lib/catalina_4_1_24.jar;lib/catalina-5.5.4.jar;lib/naming-resources.jar;lib/naming-common.jar;lib/commons-collectio
ns.jar;lib/catalina.jar;E:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\webroot com.tomcat.chapter8.startup.Bootstrap
HttpConnector Opening server socket on all host IP addresses
HttpConnector[8080] Starting background thread
LifecycleException:  start: :  java.lang.NoClassDefFoundError: org/apache/naming/JndiPermissionat org.apache.catalina.loader.WebappLoader.start(WebappLoader.java:678)at org.apache.catalina.core.StandardContext.start(StandardContext.java:3530)at com.tomcat.chapter8.startup.Bootstrap.main(Bootstrap.java:69)E:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\src>java -cp .;lib/servlet.jar;lib/catalina_4_1_24.jar;lib/catalina-5.5.4.jar;lib/naming-resources.jar;lib/naming-common.jar;lib/commons-collectio
ns.jar;lib/catalina.jar;E:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\webroot com.tomcat.chapter8.startup.Bootstrap
HttpConnector Opening server socket on all host IP addresses
HttpConnector[8080] Starting background thread
WebappLoader[/myApp]: Deploying class repositories to work directory E:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\src\work\_\_\myApp
Starting Wrapper Primitive
Starting Wrapper Modern
StandardManager[/myApp]: Seeding random number generator class java.security.SecureRandom
StandardManager[/myApp]: Seeding of random number generator has been completed
Resources' docBase: E:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\src\myAppStopping wrapper Primitive
Stopping wrapper ModernE:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\src>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331224.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

camel apache_如何使用Apache Camel,Quarkus和GraalVM快速运行100个骆驼

camel apache今天,我继续在youtube上练习,并录制了10分钟的视频,介绍了如何创建一个新的Camel and Quarkus项目,该项目包括Rest和HTTP服务以及开箱即用的健康检查和指标。 然后比较在JVM模式下运行示例与使用GraalVM编译的本机的…

漫画算法:找出缺失的整数

转载自 玻璃猫 程序员小灰 小灰一边回忆一边讲述起当时面试的情景...... 题目:一个无序数组里有99个不重复正整数,范围从1到100,唯独缺少一个整数。如何找出这个缺失的整数? 解法一: 创建一个HashMap,以1到…

tomcat(8)载入器

【0】README0.0)本文部分描述转自“深入剖析tomcat”,旨在学习 tomcat(8)载入器 的基础知识;0.1)一个标准web 应用程序中的载入器:简单来说就是 tomcat中的载入器;0.2)servlet容器需要实现一个自…

micrometer_具有InlfuxDB的Spring Boot和Micrometer第3部分:Servlet和JDBC

micrometer在上一个博客中,我们使用由InfluxDB支持的Micrometer设置了React式应用程序。 在本教程中,我们将使用传统的带有JDBC的基于Servlet的阻塞Spring堆栈。 我选择的数据库是postgresql。 我将使用与先前博客文章相同的脚本。 因此,我…

漫画算法:辗转相除法是什么鬼

转载自 玻璃猫 程序员小灰 大四毕业前夕,计算机学院的小灰又一次顶着炎炎烈日, 去某IT公司面试研发工程师岗位…… 半小时后,公司会议室,面试开始…… 小灰奋笔疾书,五分钟后…… 小灰的思路十分简单。他使用暴力…

tomcat(9)Session管理

【0】README0.0)本文部分描述转自“深入剖析tomcat”,旨在学习“tomcat-Session管理” 的基础知识;0.1)Catalina通过一个称为Session 管理器的组件来管理建立的Session对象,该组件由org.apache.catalina.Manager接口来…

micrometer_具有InlfuxDB的Spring Boot和Micrometer第2部分:添加InfluxDB

micrometer自从我们添加了基本应用程序以来,是时候启动InfluxDB实例了。 我们将按照之前的教程进行操作,并添加一个docker实例。 docker run –rm -p 8086:8086 –name influxdb-本地influxdb 是时候在我们的pom上添加微米InfluxDB依赖项了…

漫画:什么是volatile关键字?(整合版)

转载自 永远爱大家的 程序员小灰 ————— 第二天 ————— ———————————— Java内存模型简称JMM(Java Memory Model),是Java虚拟机所定义的一种抽象规范,用来屏蔽不同硬件和操作系统的内存访问差异,让j…

tomcat(supplement)HttpConnector.initialize() 和 start() 方法 以及 StandardContext.start()方法的分析

【0】README 0.0)本文中源代码的背景,参见 tomcat(9)session管理 0.1)本文主要以图片的形式分析他们大致的调用过程; 0.2)HttpConnector org.apache.catalina.connector.http.HttpConnector; 而StandardContext o…

restful rest_HATEOAS的RESTful服务。 超媒体:REST的秘密要素

restful rest在这篇文章中,我们将介绍有关HATEOAS的RESTful服务的综合文章。 超媒体是REST的秘密成分。 1.简介 在本教程的前一部分中,我们花了一些时间来刷新有关REST体系结构样式的基本原理的知识。 业界对REST状态的批判性眼光揭示了一个令人失望的…

漫画:什么是单例设计模式

转载自 永远爱大家的 程序员小灰 ————— 第二天 ————— 单例模式第一版: 1234567891011public class Singleton {private Singleton() {} //私有构造函数private static Singleton instance null; //单例对象//静态工厂方法public static Singleton ge…

如何在工作繁重、睡眠较少的情况下保持旺盛精力?

作者:陈炬 链接:https://www.zhihu.com/question/23177623/answer/47785761 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 本人也在创业,结合《精力管理》一书,说说我…

mockito接口没法赋值_Mockito:无法实例化@InjectMocks字段:类型是接口

mockito接口没法赋值使用Mockito进行Java类的模拟和存根的任何人,可能都熟悉InjectMocks -annotation。 在要测试的类上使用此批注,Mockito将尝试通过构造函数注入,setter注入或属性注入来注入模拟。 魔术成功了,它无声地失败了&a…

tomcat(10)安全性

【0】README0.0)本文部分描述转自“深入剖析tomcat”,旨在学习 tomcat(10)安全性 的基本知识;0.1)servlet技术支持通过配置部署描述器(web.xml)文件来对这些内容进行访问控制;(干货—…

SonarQube 8.3.x中的Maven项目的测试覆盖率报告

几年前,我写了一篇博客文章,介绍如何在SonarQube中生成测试报告,该报告独立于单元测试和集成测试的测试报告中。 从SonarQube 6.2开始,测试报告不再在这些类别中分开(请参阅SonarQube的博客文章 )。 SonarQ…

单例模式懒汉、饿汉和登记

转载自 JAVA设计模式之单例模式本文继续介绍23种设计模式系列之单例模式。 概念:  java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。  单例模式有以下特点…

量角器中Selenium定位器的完整指南(示例)

在测试网站的功能时,特别是Web元素(例如单选按钮,文本框,下拉列表等),您需要确保能够访问这些元素。 Selenium定位器正是出于这个目的,通过使用此命令,我们可以识别这些Web元素DOM&a…

MySQL的自然联结+外部联结(左外连接,右外连接)+内部联结

【0】README0.1)本文旨在review MySQL的自然联结外部联结(左外连接,右外连接)内部联结 的相关知识;【1】自然联结1)自然联结定义:无论何时对表进行联结,应该至少有一个列出现不止一个…

MySQL 添加列+修改列+删除列

【0】REAMDE 0.1)本文部分文字描述转自 http://blog.163.com/zhangjie_0303/blog/static/99082706201191911653778/ 0.2)本文旨在review mysql 对列的相关操作:如添加,修改,删除以及重命名表名等操作; 【1】…

compose应用_带有PostgreSQLDocker Compose for Spring Boot应用程序

compose应用在此博客文章中,您将学习如何使用PostgreSQL配置Spring Boot应用程序以与Docker Compose一起运行。 这篇博客文章涵盖: Spring Boot应用程序Dockerfile配置,在依赖项和资源之间进行了清晰的分离 用于通过PostgreSQL运行应用程序…