eclipse4.5+jdk7+tomcat7升级到eclipse4.15+jdk8+tomcat8或者tomcat9遇到的tomcat plugin的问题,记录总结分享
- 1、eclipse4.15(2919-12)下 tomcat 9 plugin插件 的安装
直接在线安装 https://www.cnblogs.com/greenteaone/p/13153530.html (插件在线安装 Tomcat Plugin 添加地址:http://tomcatplugin.sf.net/update)
或者参考 解压版
https://blog.csdn.net/ysblogs/article/details/103201435
前者下载的叫 com.sysdeo.eclipse.tomcat_3.3.1.jar 或者 3.3.0都一样
后者直接安装的会在plungin里面有个 net.sf.eclipse.tomcat_9.1.6.jar ,两种差别不大
- 2、update到tomcat,启动报错提示,ClassNotFoundException
org.apache.catalina.loader.DevLoader
我遇到的 不是 https://www.likecs.com/show-204492266.html
这里面所说的 高版本放到 dropins里的问题
实际是上面的插件的jar里打开里面有个 DevloaderTomcat7.jar 需要放到tomcat的lib下。
tomcat7 可以也是lib下有DevloaderTomcat7.jar,新下载的tomcat7和9的lib里都没有DevloaderTomcat7.jar的。放进去就不会再提示 tomcat9 ClassNotFoundException DevLoader
我的情况和 https://www.cnblogs.com/huoer33/p/5237767.html一样的,可以参考。处理后不提示上述异常了。
- 3、提示程序代码里面的各种异常了
会出现各种各样的业务的异常,类似 Error: Unable to install WebappClassLoader 还有别的各种各样的classpath找不到xml的问题之类的,错误。但是tomcat7里是正常的。 其实上面的插件也提示了,jar里是针对tomcat7的。http://tomcatplugin.sf.net/update 里面也没有tomcat8和tomcat9的了
网上有牛人,重新修改了classloader ,详见
https://blog.csdn.net/weixin_38374577/article/details/79209679
的后半部分以及附带的源码的
http://download.csdn.net/download/weixin_38374577/10232353
如果你没有积分下,我把它源码贴下面,大家开发学习。感谢作者。
package org.apache.catalina.loader;
import java.io.File;
import java.io.FileFilter;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
import javax.servlet.ServletContext;
import org.apache.catalina.LifecycleException;
/**
*
* <p>Title: DevLoader</p>
* <p>Description: JDK1.8,TOMCAT8,ECLIPSE(oxygen64)升级后,修改了兼容性</p>
* @author huyou
* @date 2018年1月30日
*/
public class DevLoader extends WebappLoader {
private static final String info = "org.apache.catalina.loader.DevLoader/1.0";
private String webClassPathFile = ".#webclasspath";
private String tomcatPluginFile = ".tomcatplugin";
public DevLoader() {
}
public DevLoader(ClassLoader parent) {
super(parent);
}
public void startInternal() throws LifecycleException {