0

I was working on an accounts application. when I tried to run the invoice form something called stack overflow exception occurred...tell me what to do about it.. everything was fine I suppose before I declared an invoice object in Stock class. this was output...

run:
Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
    at sun.awt.Win32GraphicsConfig.getBounds(Native Method)
    at sun.awt.Win32GraphicsConfig.getBounds(Win32GraphicsConfig.java:215)
    at java.awt.Window.init(Window.java:394)
    at java.awt.Window.<init>(Window.java:433)
    at java.awt.Frame.<init>(Frame.java:403)
    at java.awt.Frame.<init>(Frame.java:368)
    at javax.swing.JFrame.<init>(JFrame.java:158)
    at Invoice.<init>(Invoice.java:10)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)

    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
    at Stock.<init>(Stock.java:670)
    at Invoice.<init>(Invoice.java:1135)
BUILD SUCCESSFUL (total time: 5 seconds)
9
  • 5
    Well, no-one can help you without seeing the corresponding code! Commented Jun 4, 2011 at 12:07
  • 2
    You probably have a recursive call that does not terminate, but I can't see the problem since I don't have your source code. Post a code example (sscce.org) Commented Jun 4, 2011 at 12:08
  • 4
    This one looks simple. Stock and Invoice constructors are called in a recursive manner. Commented Jun 4, 2011 at 12:09
  • 1
    in Invoice c-tor you call new Stock(), and that new Stock() c-tor, you have new Invoice(). There you have it, w/o the code :) Commented Jun 4, 2011 at 12:10
  • 2
    Well, at least you're in the right place... Commented Jun 4, 2011 at 12:10

2 Answers 2

17

In the Invoice constructor, you're creating a new Stock object (in line 1135).

In the Stock constructor, you're creating a new Invoice object (in line 670).

In the Invoice constructor, you're creating a new Stock object (in line 1135).

and so on and on, until you reach the maximum stack depth. You need to figure out which one of Invoice and Stock should automatically create new instances of the other, or create the objects and then assign them to each other.

Sign up to request clarification or add additional context in comments.

Comments

2

Well.. We need to see some code before we can answer you, but stackoverflow exceptions usually happens when you have some code calling itself without ever ending (Recursion, without progress). So you should look at your code, and find out under what conditions it should terminate the loop, and why it doesnt do that yet :)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.