*请在帖子末尾看 EDIT 2 。
我能够毫无问题地调试我的.java类。我使用套接字(SocketAttach)连接调试器,主机是localhost,当我在调试模式下的端口是8000时。
但是我试图在jsp页面中调试一个函数,比如
<%
...
ArrayList list = vb.getStuff();
...
Iterator it = list.iterator();
while (it.hasNext()){
...
//I show my list items in a table
...
}
%>
当我在
上设置断点时ArrayList list = vb.getStuff();
即使我看到我的断点位于右侧,它也不会停止。
在我的调试器控制台中,我看到了
JspLineBreakpoint myPath/mylist.jsp : 48 partially submitted - not into all classes, reason: No executable location available at line 48 in class org.apache.jsp.portal_jsp.
但断点仍然存在。
我在Netbeans中有一个项目,所以它不会与其他项目混淆......
感谢任何帮助,非常感谢。
P.S:这里有一些有用的东西 - &gt;
产品版本:NetBeans IDE 8.0.2(Build 201411181905) 更新:NetBeans IDE已更新为NetBeans 8.0.2 Patch 2版本 Java:1.8.0_65; Java HotSpot(TM)64位服务器VM 25.65-b01 运行时:Java(TM)SE运行时环境1.8.0_65-b17 系统:在amd64上运行的Windows 7版本6.1; CP1252;
编辑:我忘了说我使用的是tomcat 7 编辑2:我刚刚意识到我可以在jsp页面中调试从那里调用的函数。当我在
上设置断点时ArrayList list = vb.getStuff();
即使我看到右边的断点,它也不会停止 线。
但是,如果我在该函数的第一行(也在jsp页面中)放置一个断点,我将能够调试它。我猜它是因为它在一个函数中......之前的代码ArrayList
不是。因此,调试器将跳过首先执行的代码,该代码不包含在函数中......
为什么要解释?它是否认为它是&#34; html代码的一部分&#34;然后跳过它,但是当它看到我调用了函数时,它会调试它吗?
答案 0 :(得分:0)
这可能是由于项目中的代码与服务器上运行的代码不匹配,但也可能是由于您正在使用的服务器类型(Weblogic例如通过编译jsp来自动生成servlet类)它改变)。这种类型的不匹配可以使调试变得“有趣”,因为一些代码会排成一行,但其他部分则不会,如果是这样,就会设置和破坏断点。最好的办法是重建和重新部署,或者在调试源中,设置将jsp源部署为源的目录,并从Sources中删除项目代码。我很确定当服务器运行端口和定义设置时,这可以工作,这样您就可以连接调试器(如本例所示),而不是从IDE运行服务器。希望这有助于某人(有一天......)
答案 1 :(得分:0)
我在使用Netbeans 8.2和Glassfish 4时遇到了类似的麻烦,但仅限于某些Web项目。
失败的项目将Web Pages Folder
设置为../other/web2
而不是web
(组织团队合作是必需的)。
将资源复制到web/
之后,我还必须清除Netbeans缓存文件夹以使其再次工作。