IDEA查看org.apache.jasper.runtime.HttpJspBase爆红

IDEA查看org.apache.jasper.runtime.JspWriterImpl;爆红                                    JspWriter没有print()的实现类。

具体原因是因为没有导入源代码,这个类HttpJspBase是tomcat的类。它属于tomcat容器的api接口类。而为什么我们在idea使用这个类的时候,它会爆红呢?

原因在于我们下载的Tomcat是二进制文件的核心。并没有把相应的源代码也下进去。

IDEA查看org.apache.jasper.runtime.HttpJspBase爆红_第1张图片

然后再IDEA导入tomcat包,同样使用的仍然是二进制的这个包。当我们想要查看对应的源码的时候,就会发现,它对应的源码是一个class文件。

IDEA查看org.apache.jasper.runtime.HttpJspBase爆红_第2张图片

比如,我想使用out.print的方法。然后查看源码的时候,发现它的实现类根本没有print的具体实现类,print是一个抽象的接口方法。导致,在源码的学习的时候,就碰上难题。(明明它都没有对print这个方法进行实现啊,为什么最后它实现了这个方法。通过ctrl+h查看具体的实现类也没有找到对应的关系。)

问题就是因为我们下载的tomcat是一个二进制的包,它对具体的源码实现进行了屏蔽。 

我们把它的源码文件下载下来就好了。

选择方式:

IDEA查看org.apache.jasper.runtime.HttpJspBase爆红_第3张图片

IDEA查看org.apache.jasper.runtime.HttpJspBase爆红_第4张图片

导入成功之后,再去查看,就可以看到实现类的源码:

IDEA查看org.apache.jasper.runtime.HttpJspBase爆红_第5张图片

最后:还是有点问题:导入源代码之后,虽然可以查看print()方法具体实现的源代码,但是,有一些类还是爆红出现,就算使用相同的版本情况下还是如此。留作疑问。

你可能感兴趣的:(intellij-idea,apache,java)