IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Jasper Discussion :

JasperReport : OutOfMemoryError inexplicable


Sujet :

Jasper

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 52
    Points : 42
    Points
    42
    Par défaut JasperReport : OutOfMemoryError inexplicable
    Bonjour,

    D'abord, je me presente, je suis stagiaire dans un centre de recherche, et l'on me demande de developper un module d'edition de rapport. Ce module d'edition est a integrer dans une application Eclipse RCP. Rien de bien complique grâce a Jasper.

    Mais la, je suis face a un vrai probleme, lorsque j'avais fini de developper le module d'edition, tout fonctionnait parfaitement. J'ai ensuite continuer sur d'autres parties du projet (non concerne ici). Quand j'ai essaye de faire de nouveau tests, je me suis retrouve avec une OutOfMemoryError inexplicable. J'ai essaye plein de choses differentes pour revenir en arriere mais je n'ai vraiment aucune idee de la maniere de proceder. Je vais essayer de vous detailler les elements pertinents que j'ai tente (je ne vous parlerai pas des priere ou autre rite vaudoo).

    D'abord le rapport est compose de resultats d'un outil de calcul. L'objet contenant les resultats est envoye a une factory de JavaBean elementaires permettant de rajouter du contenu textuelle aux resultats sans surcharger inutilement la classe de calcul. Au rapport principal s'ajoute uniquement deux sous-rapports directs (tous deux tres simples).

    D'apres les traces generes (voir plus bas), le probleme vient de JFreeChart qui n'arrive pas a creer de nouveaux Thread. Mais même en jouant sur la configuration de l'application, ce probleme n'est pas resolut. J'ai biensur essayer de commenter la creation des graphiques, ce qui me permet de genere un rapport sans encombre. Mais j'ai besoin de ses graphiques. Je les ai donc remis en tant que parametres et ô grande surprise l'erreur ne vient plus des graphiques mais du "fillReport".

    J'ai ensuite essaye de recreer un rapport depuis zero et pas a pas, j'ai teste. De cette maniere, j'ai reussi a generer des rapports avec des graphique sans aucun soucis. Mais des que j'ajoute un sous rapport (même compose de texte static), le probleme revient et ne disparait pas avec la suppression du sous-rapport.

    Je suis perdu et je commence a perdre espoire. j'y ai passer plusieurs jours et une des dernieres idees et de changer d'ordinnateur.

    Stack trace genere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    java.lang.OutOfMemoryError: unable to create new native thread
        at java.lang.Thread.start0(Native Method)
        at java.lang.Thread.start(Unknown Source)
        at sun.awt.windows.WToolkit.<init>(Unknown Source)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at java.lang.Class.newInstance0(Unknown Source)
        at java.lang.Class.newInstance(Unknown Source)
        at java.awt.Toolkit$2.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.Toolkit.getDefaultToolkit(Unknown Source)
        at javax.swing.UIManager.<clinit>(Unknown Source)
        at org.jfree.chart.JFreeChart.<clinit>(JFreeChart.java:261)
        at org.jfree.chart.ChartFactory.createScatterPlot(ChartFactory.java:1513)
        at ics.eaat.jasper.reporting.chart.DSMChart.createChart(DSMChart.java:61)
        at ics.eaat.jasper.reporting.chart.DSMChart.createDirectDependencyMatrix(DSMChart.java:36)
        at ics.eaat.jasper.reporting.report.BeanDSM.<init>(BeanDSM.java:25)
        at ics.eaat.jasper.reporting.report.DataSourceFactory.dataSourceDSMAnalyze(DataSourceFactory.java:24)
        at ics.eaat.jasper.reporting.report.PdfFactory.generateDSMReport(PdfFactory.java:36)
        at ics.eaat.concretemodeller.controller.Controller.calculateDSM(Controller.java:2042)
        at ics.eaat.concretemodeller.main.handlers.CalculateDSMCommandHandler.execute(CalculateDSMCommandHandler.java:27)
        at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293)
        at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
        at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
        at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
        at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
        at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:829)
        at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:815)
        at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:805)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
        at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
        at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
        at ics.eaat.concretemodeller.main.Application.start(Application.java:20)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
    La PDF Factory
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    public class PdfFactory {
     
    	public static void generateDSMReport(DSM dsm, String outputDirectory){
     
    		Map<String, Object> parameters = new HashMap<String, Object>();
     
    		parameters.put("inputMatrix", DSMChart.createDirectDependencyMatrix(dsm.getListOfElement()));
    		parameters.put("rearrangedMatrix", DSMChart.createRearrangedMatrix(dsm.getListOfElement()));
     
    //		generatePdfReport("DSMReport", parameters, DataSourceFactory.dataSourceDSMAnalyze(dsm), outputDirectory);
    		generatePdfReport("test", parameters, DataSourceFactory.dataSourceDSMAnalyze(dsm), outputDirectory);
    	}
     
    	@SuppressWarnings("rawtypes")
    	private static void generatePdfReport (String templateName, Map<String, Object> parameters, Collection data, String outputName){
    		JasperPrint jasperPrint = null;
     
    		try {
    			jasperPrint = JasperFillManager.fillReport(findAbsolutePath("/template/" + templateName + ".jasper"), parameters, new JRBeanCollectionDataSource(data));
    		} catch (JRException e) {
    			Status status1= new Status(IStatus.ERROR, PLUGIN_ID, "Impossible to fill the template");
    			StatusManager.getManager().handle(status1, StatusManager.LOG);
    			return;
    		}
     
    		try {
    			JasperExportManager.exportReportToPdfFile(jasperPrint, outputName);
    		} catch (JRException e) {
    			Status status1= new Status(IStatus.ERROR, PLUGIN_ID, "Impossible to generate the report, the PDF might be already open.");
    			StatusManager.getManager().handle(status1, StatusManager.LOG);
    			return;
    		}
    	}
    }

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 52
    Points : 42
    Points
    42
    Par défaut
    J'ai changé d'ordinateur et le problème ne se posait plus



    Du coup j'espère que ça vient bien de l'ordinateur et non d'un problème plus général (config par exemple ...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JFreeChart : OutOfMemoryError inexplicable
    Par alex77722 dans le forum Graphisme
    Réponses: 4
    Dernier message: 14/05/2013, 18h00
  2. [JSP] pb " java.lang.outOfMemoryError "
    Par lthomas dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 31/03/2005, 11h13
  3. [Print]Edition en java : JTable ou JasperReports
    Par calimero82 dans le forum Composants
    Réponses: 5
    Dernier message: 05/11/2004, 16h50
  4. [Debutant(e)]outOfMemoryError
    Par saidi_chahrat dans le forum Général Java
    Réponses: 12
    Dernier message: 30/08/2004, 10h31
  5. Pb de Recordset inexplicable...
    Par Tapioca dans le forum ASP
    Réponses: 2
    Dernier message: 06/08/2004, 14h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo