Bonsoir,
Je rencontre cette erreur ci:
Lorsque j'execute mon programme (l'erreur provient de la ligne rouge):
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 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at org.apache.xmlbeans.impl.store.Cur$CurLoadContext.attr(Cur.java:3039) at org.apache.xmlbeans.impl.store.Cur$CurLoadContext.attr(Cur.java:3060) at org.apache.xmlbeans.impl.store.Locale$SaxHandler.startElement(Locale.java:3250) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.reportStartTag(Piccolo.java:1082) at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.parseAttributesNS(PiccoloLexer.java:1822) at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.parseOpenTagNS(PiccoloLexer.java:1521) at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.parseTagNS(PiccoloLexer.java:1362) at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.parseXMLNS(PiccoloLexer.java:1293) at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.parseXML(PiccoloLexer.java:1261) at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.yylex(PiccoloLexer.java:4808) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yylex(Piccolo.java:1290) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yyparse(Piccolo.java:1400) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.parse(Piccolo.java:714) at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3439) at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1270) at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1257) at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:345) at org.openxmlformats.schemas.spreadsheetml.x2006.main.WorksheetDocument$Factory.parse(Unknown Source) at org.apache.poi.xssf.usermodel.XSSFSheet.read(XSSFSheet.java:142) at org.apache.poi.xssf.usermodel.XSSFSheet.onDocumentRead(XSSFSheet.java:134) at org.apache.poi.xssf.usermodel.XSSFWorkbook.onDocumentRead(XSSFWorkbook.java:235) at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:190) at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:182) at Extraction2.main(Extraction2.java:138)
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168 //But: écrire dans le fichier 'Quimper2_AS_OE_1erT_2012.xlsx' et récupérer pour chaque feuille de semaine (ex:'S04') les agents avec leur heures effectués. // System.out.println("----> on extrait les prénoms des agents avec leur heures effectués dans la semaine pour chaque prenom égale dans la colonne correspondante à la semaine travaillé."); String prenom_recup = null; String prenom_agent = null; String semaineQuimper; int semaineQ[][] = new int[100][100]; InputStream ist = new FileInputStream("C:/Donnees/Aide_Manager/Quimper2_AS_OE_2012.xlsx"); OPCPackage opc=OPCPackage.open(ist); XSSFWorkbook wb2= new XSSFWorkbook(opc); XSSFSheet sheet2 = (XSSFSheet)wb2.getSheet("heures"); XSSFRow row2 = null; XSSFCell cell2 = null; //pour ouvrir un .xlsx FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); evaluator.evaluate(cell2); XSSFCellStyle cellStyle = null; XSSFDataFormat fmt = wb2.createDataFormat(); //version .xlsx //on récupère toutes les semaines trouvée ds le fichier 'Quimper...' de la ligne 1 colonne par colonne //lis toutes les colonnes de la ligne 1(ou se trouve les semaines) System.out.println("-> on récupère toutes les semaines trouvée ds le fichier 'Quimper...' de la ligne 1 colonne par colonne."); for(int i=2;i<=66;i++){//jusqu'au totaux de décembre row2 = sheet2.getRow(1);//récupère la ligne 1 semaineQuimper = row2.getCell(i).getStringCellValue();// récupère la chaine de la colonne en cours if(semaineQuimper.startsWith("S") && !semaineQuimper.equals("Septembre")){//si ca commence par s et ne commence pas par Septembre semaineQ[0][k]=Integer.parseInt(semaineQuimper.substring(1));//on récupère la semaine semaineQ[1][k]=row2.getCell(i).getColumnIndex();//et aussi la colonne ou elle est présente dans le fichier System.out.println("semaineQ: "+semaineQ[0][k]+" à la colonne: "+semaineQ[1][k]); } k++; } System.out.println(""); System.out.println("## Récupération des prénoms seulement + la ligne où il se trouve dans le fichier 'Quimper2...'. ##"); int g = 0;//compteur pour le tableau for(int i=2;i<=17;i++){ row2 = sheet2.getRow(i); cell2 = row2.getCell(1); Agent a = new Agent(); if(cell2 != null){ prenom_agent=row2.getCell(1).getStringCellValue();//on récupère le nom+prénom de l'agent String[] prenom=prenom_agent.split(" "); int ligne_prenom; if(prenom.length==2){//ex: [nom]espace[prenom] prenom_recup=prenom[1];//recup du prénom ligne_prenom= row2.getRowNum();// récup de la ligne (pour écrire l'heure dans la bonne colonne) a.setAgent(prenom_recup); a.setNum_ligne_agent(ligne_prenom);//recup de la ligne ou il est ds la fichier final //System.out.println("sans un espace ds le nom: "+prenom_recup+" ligne_du_nom: "+ligne_prenom); listAgent.add(a); tabPrenomQ[0][g]=prenom_recup; System.out.println("Avec Nom seul: "+tabPrenomQ[0][g]+"index: "+g); tabPrenomQ[1][g]=String.valueOf(ligne_prenom); g++; } if(prenom.length==3){//ex: [nom]espace[nom]espace[prenom] prenom_recup=prenom[2]; ligne_prenom= row2.getRowNum();// récupération de la ligne a.setAgent(prenom_recup); a.setNum_ligne_agent(ligne_prenom); //System.out.println("avec un espace ds le nom: "+prenom_recup+" ligne_du_nom: "+ligne_prenom); listAgent.add(a); tabPrenomQ[0][g]=prenom_recup; System.out.println("Avec un Nom composé de 2 mots: "+tabPrenomQ[0][g]+"index: "+g); tabPrenomQ[1][g]=String.valueOf(ligne_prenom); g++; } } } System.out.println(""); System.out.println("Liste des prénoms du fichier Quimper.xlsx"); //pour voir tous les prénoms de mon tableau récupérer de Quimper for (int d=0; d<tabPrenomQ.length;d++){ if(tabPrenomQ[0][d] != null || tabPrenomQ[1][d]!=null){//si l'une des cellules n'est pas null //afficher l'agent + la validation System.out.println("Prénom: "+tabPrenomQ[0][d]+" se trouvant à la ligne: "+tabPrenomQ[1][d]); } } System.out.println(""); System.out.println("Prénom par semaine de Projection.xlsx"); //pour voir tous les prénoms de mon tableau récupérer de Quimper for (int d=0; d<tabPrenomP.length;d++){ if(tabPrenomP[0][d] != null ){//si l'une des cellules n'est pas null //afficher l'agent + la validation System.out.println("Semaine: "+semaineP[1][d]+"Prénom: "+tabPrenomP[0][d]); } } //^^^^^^^^^^^^^^ System.out.println(""); System.out.println("*******************SEMAINE 1*********************"); int nbPrenomsP = tabPrenomP.length; int nbPrenomsQ = tabPrenomQ.length; //pour ecrire chaque heure pour chaque agent dans le fichier Quimper System.out.println("tabPrenomQ | tabPrenomP"); for (int y=0; y<nbPrenomsQ; y++){//pour chaque prénom de Quimper if(tabPrenomQ[0][y]!=null){ int z, f=0; repet :for(z = 0; z<nbPrenomsP; z++){//et pour chaque prenom du fichier Projection if(tabPrenomP[0][z]!=null){ if(semaineP[1][f]==1){// si la semaine de l'agent en cours trouvée est = 1 //System.out.println("semaineP après le if"+semaineP[1][f]); System.out.println(tabPrenomQ[0][y]+y+" = "+tabPrenomP[0][z]+z); if(tabPrenomQ[0][y].equals(tabPrenomP[0][z])){//si le prénom du 1er fichier = prénom du 2ème fichier //écrire ds "Quimper2_AS_OE_2012.xlsx", les heure de "Projection"/onglet dans les bonnes colonnes row2 = sheet2.getRow(Integer.parseInt(tabPrenomQ[1][z])); cell2 = row2.createCell(2);//on l'écrit à la colonne 2 (semaine 51) cell2.setCellValue(tabheures[1][y]/24.0); cellStyle = wb2.createCellStyle(); cellStyle.setDataFormat(fmt.getFormat("hh:MM")); cell2.setCellStyle(cellStyle); System.out.println("on écrit l'heure trouvée "); System.out.println("SEMAINE 1: "+tabPrenomQ[0][y]+y+" = "+tabPrenomP[0][z]+z+"a fait: "+tabheures[1][z]); z=0;//POUR RETESTER LES AGENT DE LA SEMAINE 1 break repet; } } } // si la semaine de l'agent en cours trouvée n'est pas = 1: on passe au prénom suivant de Quimper f++; }//2eme for z=0; }//1er if }//2ème for System.out.println("*******************SEMAINE 4*********************"); System.out.println("tabPrenomQ | tabPrenomP"); for (int y=0; y<nbPrenomsQ; y++){//pour chaque prénom de Quimper if(tabPrenomQ[0][y]!=null){ int z, f=0; repet :for(z = 0; z<nbPrenomsP; z++){//et pour chaque prenom du fichier Projection if(tabPrenomP[0][z]!=null){ if(semaineP[1][f]==4){// si la semaine de l'agent en cours trouvée est = 1 //System.out.println("semaineP après le if"+semaineP[1][f]); System.out.println(tabPrenomQ[0][y]+y+" = "+tabPrenomP[0][z]+z); if(tabPrenomQ[0][y].equals(tabPrenomP[0][z])){//si le prénom du 1er fichier = prénom du 2ème fichier // System.out.println("SEMAINE 4: "+tabPrenomQ[0][y]+y+" = "+tabPrenomP[0][z]+z+"a fait: "+tabheures[1][z]); z=0;//POUR RETESTER LES AGENT DE LA SEMAINE 1 break repet; } } } // si la semaine de l'agent en cours trouvée n'est pas = 1: on passe au prénom suivant de Quimper f++; }//2eme for z=0; }//1er if }//2ème for // Write the output to a file FileOutputStream fileOut = new FileOutputStream("C:/Donnees/Aide_Manager/Quimper2_AS_OE_1erT 2012.xlsx"); wb2.write(fileOut); fileOut.close(); //System.out.println("écrire à la bonne ligne l'heure que l'agent à effectué dans Projection"); } catch (FileNotFoundException e){ e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (InvalidFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
D'après mes recherche, j'ai modifié mon eclipse.ini comme suit:
Quand je met eclipse.ini:
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 -startup plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502 -product org.eclipse.epp.package.jee.product --launcher.defaultAction openFile --launcher.XXMaxPermSize 256M -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256M --launcher.defaultAction openFile -vmargs -Dosgi.requiredJavaVersion=1.5 -Xms512m -Xmx1024m
-Xmx1024m
Quand je redémarre eclipse, j'ai:
"failed to create the java virtual machine"
du coup, je suis repasser a 1024.
je comprend pas, ce qu'il faut faire j'ai terminé mon programme mais il marche pas.
Quelqu'un sait-il ce que je dois faire svp ?
merci
Partager