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

来源:互联网 发布:淘宝违规产品怎么处理 编辑:程序博客网 时间:2024/05/12 14:12
【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-collections.jar;lib/catalina.jar;E:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\webroot com.tomcat.chapter8.startup.BootstrapHttpConnector Opening server socket on all host IP addressesHttpConnector[8080] Starting background threadWebappLoader[/myApp]: Deploying class repositories to work directory E:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\src\work\_\_\myAppException in thread "main" java.lang.NoClassDefFoundError: org/apache/catalina/loader/Extension        at 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.Extension        at 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-collections.jar;lib/catalina.jar;E:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\webroot com.tomcat.chapter8.startup.BootstrapHttpConnector Opening server socket on all host IP addressesHttpConnector[8080] Starting background threadWebappLoader[/myApp]: Deploying class repositories to work directory E:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\src\work\_\_\myAppException in thread "main" java.lang.NoClassDefFoundError: org/apache/catalina/loader/Extension        at 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.Extension        at 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-collections.jar;lib/catalina.jar;E:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\webroot com.tomcat.chapter8.startup.BootstrapHttpConnector Opening server socket on all host IP addressesHttpConnector[8080] Starting background threadLifecycleException:  start: :  java.lang.NoClassDefFoundError: org/apache/naming/JndiPermission        at 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-collections.jar;lib/catalina.jar;E:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\webroot com.tomcat.chapter8.startup.BootstrapHttpConnector Opening server socket on all host IP addressesHttpConnector[8080] Starting background threadWebappLoader[/myApp]: Deploying class repositories to work directory E:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\src\work\_\_\myAppStarting Wrapper PrimitiveStarting Wrapper ModernStandardManager[/myApp]: Seeding random number generator class java.security.SecureRandomStandardManager[/myApp]: Seeding of random number generator has been completedResources' docBase: E:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\src\myAppStopping wrapper PrimitiveStopping wrapper ModernE:\bench-cluster\cloud-data-preprocess\HowTomcatWorks\src>

0 0
原创粉丝点击