IDEA查看org.apache.jasper.runtime.JspWriterImpl;爆红 JspWriter没有print()的实现类。
具体原因是因为没有导入源代码,这个类HttpJspBase是tomcat的类。它属于tomcat容器的api接口类。而为什么我们在idea使用这个类的时候,它会爆红呢?
原因在于我们下载的Tomcat是二进制文件的核心。并没有把相应的源代码也下进去。
然后再IDEA导入tomcat包,同样使用的仍然是二进制的这个包。当我们想要查看对应的源码的时候,就会发现,它对应的源码是一个class文件。
比如,我想使用out.print的方法。然后查看源码的时候,发现它的实现类根本没有print的具体实现类,print是一个抽象的接口方法。导致,在源码的学习的时候,就碰上难题。(明明它都没有对print这个方法进行实现啊,为什么最后它实现了这个方法。通过ctrl+h查看具体的实现类也没有找到对应的关系。)
问题就是因为我们下载的tomcat是一个二进制的包,它对具体的源码实现进行了屏蔽。
我们把它的源码文件下载下来就好了。
选择方式:
导入成功之后,再去查看,就可以看到实现类的源码:
最后:还是有点问题:导入源代码之后,虽然可以查看print()方法具体实现的源代码,但是,有一些类还是爆红出现,就算使用相同的版本情况下还是如此。留作疑问。