开发者

Stack trace shows exception at wrong position

I'm dealing with a null pointer exception for which I have a stack trace. In my log files, stack traces provide line numbers. It seems like the line numbers on the exception's stack trace are wrong. This is in a project that's new to me.

When I look at the source code at the specified lines, there is sometimes no code (a blank line) or an end curly brace (}), so I'm unable to find the cause of the NullPointerException.

java.lang.NullPointerException at

com.test.AddProductServlet.list(AddProductServlet.java:776)

at

com.test.AddProductServlet.list(AddProductServlet.java:436)

at

com.test.AddProductServlet.routeAction(AddProductServlet.java:263)

at

com.test.AddProductServlet.onService(AddProductServlet.java:145)

at

com.test.MqServlet.service(MqServlet.java:500)

at

javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

I inserted breakpoints before the lines from the stack trace (i.e. 770, 430 and 260) and still can't find the cause of the exception.

I am using Eclipse Helios 开发者_开发问答with Java 1.6.0_16. Is this an Eclipse problem? If so, what changes are required?

I redeployed the project but still have the same problem.

What do I do next? How can I solve this problem?


I am using eclipse helios, Java 1.6.0_16. Is it eclipse problem ?

No. The JVM creates the stack traces, not Eclipse. (It is theoretically possible that Eclipse's Java compiler could insert incorrect line numbers into the .class files ... but hundreds of thousands of Java developers would have noticed by now ...)

I redeployed project still same problem. what to do next ? How to solve this problem?

As @Mike says "The source code that you're looking at is not the source code that was used to produce the compiled code that's throwing the error."

It therefore is either a build, deployment or configuration problem:

  1. In Eclipse, do an F5 refresh, clean and build the project, then redeploy and see if that fixes the line numbers.

  2. Manually shutdown the server, delete the deployed WAR file and expanded directory, redeploy the WAR file and restart the server.

  3. Search the deployed webapp, including all JAR files to find all copies of AddProductServlet.class.

    • If there is more than one, figure out why.

    • If there is only one, check that it is identical to the one that you just built, and if it is not, find out why.

  4. Use Ant or whatever to build the code outside of Eclipse, then deploy that. (This will eliminate any possibility that it is Eclipse's fault ...)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜