xq8995209 发表于 2017-2-28 11:41:18

调试openfire的JSP页面,openfire debug

  欢迎来到Raigor的园子,我的博客地址是:http://www.cnblogs.com/raigor/
  找到这篇博客的朋友,一定是遇到了和我类似的问题:
  (我的调试环境是Linux Mint 13 + Eclipse3.6 + openfire 3.8.1)
  首先,参照各种”openfire开发配置“、“openfire开发调试”等文章,成功启动服务,并实现对java类的断点调试。(如果这一步还没有完成 推荐这篇:http://blog.csdn.net/ares1201/article/details/7737872)
  然而我们会发现,/src/web/目录下的JSP页面,含有大量java代码,但此时对页面的断点却不能生效,十分痛苦。而这对于学习研究openfire源码,是非常需要的。
  经过多番搜索,发现有不少朋友讨论到调试的话题,但都不是能够解决上述问题的,于是,还是自己研究吧。
  如果是tomcat,我们知道使用jpda即可启动debug模式,进行页面的调试,但openfire内置的是jetty服务器,尝试使用jpda的方法后并没有成功。
  终于,一个意外的发现,解决了我的问题,请看:
  在/src/bin/目录下,有一个文件:openfire-dev.bat,显然,它是Win下使用的,所以之前并没有注意到这个文件。其中一段注释是这样的:
  REM # Starts Openfire in development mode, which means that JSP pages in the admin console will
REM # be compiled dynamically out of the web src directory. This makes it much easier to admin
REM # console development.
  原来,openfire已经准备了开发模式,只要启用就可以调试JSP页面了,但是为何只写在这么一个bat文件中,坑啊!
  好了,启用的方法:在VM arguments中,增加-DdevelopmentMode="true",再次启动openfire服务器,启动信息多了一行“使用开发模式”了:

  SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in
SLF4J: Found binding in
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
Openfire 3.8.1
使用开发模式
管理平台开始监听:
  通过浏览器打开管理控制台,会奇怪的报错:

HTTP ERROR 500
  Problem accessing /. Reason:

    Unable to compile class for JSP
Caused by:

org.apache.jasper.JasperException: Unable to compile class for JSP

Caused by:

Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK
  解决的办法是:在Run Configurations中,Classpath中添加 jdk/lib/tools.jar,

  ("%JAVA_HOME%明明配好的,可是这里需要指定一下)再次运行,就没有错误了。
  本文地址:http://www.cnblogs.com/raigor/archive/2013/03/30/2990813.html
  现在开始调试页面吧! 如果有疑问,欢迎交流!
页: [1]
查看完整版本: 调试openfire的JSP页面,openfire debug