Наиболее распространенной причиной переполнения стека является чрезмерно глубокая или бесконечная рекурсия. Если это ваша проблема, этот учебник о Java Recursion может помочь понять проблему.
Стандартный ответ Java часто бывает:
Как насчет i-net Clear Reports (раньше это был i-net Crystal-Clear).
Хотя это и не бесплатно, вам также следует рассмотреть это недорогое, несвободное, не с открытым исходным кодом решение для создания отчетов, которое может полностью конкурировать с Crystal Reports - и основано на Java.
Я думаю, что оно даже более экономично, чем "бесплатные". Небольшой компании, возможно, придется задуматься о бесплатных вещах, но тогда придется вкладывать деньги в рабочую силу, чтобы узнать, как все работает и так далее. Крупные компании наверняка подпишутся на премиальные услуги поддержки, которые стоят немало. См. эту статью для справки
i-net Clear Reports имеет очень низкий ценник с отличной поддержкой бесплатно и еще лучшей премиум-поддержкой через годовую подписку.
Раскрытие информации: Да, я работаю в компании, которая создала это, так что я предвзят. Но я искренне верю в то, что только что написал.
Диспетчер отчетов был вокруг в течение довольно многих лет. Это записано в Delphi (по крайней мере, это было первоначально), и имеет компоненты, которые могут использоваться в Delphi, но применимы через ActiveX или dll с примерно любого языка. Теперь имеет собственную библиотеку.NET также. Имеет изящный служащий отчету веб-сервер, который можно настроить также. Разработчик gui стили немного грубо вокруг краев, но это работает. http://reportman.sourceforge.net/
JasperReports, если Вы пишете Java.