困扰了两天的tomcat运行servlet错误,没有你做不到只有你想不到,勇于尝试是成功的必要条件之一:

java服务产生很多ESTABLISHED java服务器错误_eclipse


java服务产生很多ESTABLISHED java服务器错误_eclipse_02


没错如你所见这错误真高大尚,500是404再次回车后的结果,原因仔细看画笔部分:

红色:无法初始化类xxxxx

蓝色:这个类被xxx版的java编译,这个只能识别到xxx版本的.class类文件

由此可得,是版本的问题,但是什么的版本呢,是eclipse还是jdk呢,开始我认为是路径错误:

java服务产生很多ESTABLISHED java服务器错误_eclipse_03


仔细比对,没毛病,包括名字;

后来我以为是配置文件出了问题:

java服务产生很多ESTABLISHED java服务器错误_tomcat_04


很明显,对比了n边,还是没有错误,

不仅如此,我还对比了代码,代码放的位置,还是不行。

光这些我就翻看了老师的录屏不下5遍,最终,我来到了这里:

java服务产生很多ESTABLISHED java服务器错误_tomcat_05

因此初步判定,是版本问题,我就开始怀疑jdk的配置:

java服务产生很多ESTABLISHED java服务器错误_tomcat_06


java服务产生很多ESTABLISHED java服务器错误_eclipse_07

java服务产生很多ESTABLISHED java服务器错误_tomcat_08


java服务产生很多ESTABLISHED java服务器错误_java_09


java服务产生很多ESTABLISHED java服务器错误_java_10


java服务产生很多ESTABLISHED java服务器错误_开发环境_11


以上这些jdk位置都是错误的,由于点了打开键导致的,正确的位置通过复制地址栏获得。

下图,这个是1.2版本的,我用的是1.8,切换过去就可以了,这里设置后tomcat就会指定用这个版本的jdk。

java服务产生很多ESTABLISHED java服务器错误_开发环境_12

这步就是罪恶的根源,原本认为tomcat运行servlet是与eclipse无关的,eclipse只是提供了个写代码的环境,但你别忘了jdk负责开发环境,也说明它与编译有关,我们要用到它编译得到的.class故这是我们最容易忽略的问题原理,这里用的jdk要与tomcat指定的一样,这是一种统一,一种对应。有点常识就会知道,不统一可能会对,这涉及到兼容性,但统一一定会对,至少相对不统一而言。

java服务产生很多ESTABLISHED java服务器错误_java_13

以上这两幅图对应使用的执行环境和兼容性的对应,因为我们不在这里执行,所以无伤大雅,但要注意的是,每种执行环境都有与之完美匹配的jdk版本,我原先用的是SE-12,只能对应12.0版本,后来为了与tomcat对应,用了1.8,1.8最好的对应是SE-11

注意,这里才是最最最重要的:
由于JavaSE-12不兼容jdk1.8,所以原来的JavaSE-12在这里没有包括jdk1.8在里面,故编译得到的.class文件不符合用jdk1.8提供的开发环境所获得的.class文件,因此改为JavcaSE-11,它已经将jdk1.8包括在里面了

java服务产生很多ESTABLISHED java服务器错误_tomcat_14


java服务产生很多ESTABLISHED java服务器错误_开发环境_15


java服务产生很多ESTABLISHED java服务器错误_开发环境_16