Bonsoir,

Je rencontre cette erreur ci:
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)
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
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:
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
Quand je met eclipse.ini:
-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