Bonjour tout le monde,

Alors, je vous explique mon problème. J'ai un programme java (ExportHtml) qui me permet de générer une fichier html à partir d'un fichier .jasper à l'aide de la fonction JasperExportManager.exportReportToHtmlFile

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
package ExportHtml;
 
import net.sf.jasperreports.engine.JasperExportManager;
 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
//import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JRException;
 
 
 
public class html {
 
	public static void main(String[] args) throws JRException, SQLException, IOException {
 
		String url = "jdbc:mysql://ip/database";
        String login = "toto";
        String password = "toto";
        String fichier ="//root//Desktop//report//liste_report.txt";  // - Le chemin du fichier à lire
		File file = new File("//root//Desktop//report");  // - Le chemin du répertoire des fichiers Jasper
 
        Driver monDriver = new org.gjt.mm.mysql.Driver();
        DriverManager.registerDriver(monDriver);
        Connection connexion = (Connection) DriverManager.getConnection(url, login, password);
 
		InputStream ips=new FileInputStream(fichier); 
		InputStreamReader ipsr=new InputStreamReader(ips);
		BufferedReader br=new BufferedReader(ipsr);
		String ligne;
		while ((ligne=br.readLine())!=null){
			System.out.println(ligne);
			// - Recuperation du fichier jasper
			JasperPrint jasperPrint = JasperFillManager.fillReport(new FileInputStream(new File(file, ligne+".jasper")),null,connexion);
 
			// - Création du rapport au format HTML (chemin complet)
			JasperExportManager.exportReportToHtmlFile(jasperPrint, "//var//www//baw_report//"+ligne+".html");
		}
		br.close(); 
 
 
	}
 
}

Jusque la pas de problème ça fonctionne. Sauf que maintenant j'ai un fichier .jasper qui fonctionne avec un scriptlet, c'est à dire avec une fonction java que j'ai crée sous iReport et qui est contenue dans un fichier .class

Lorsque mon programme ExportHtml tente de générer le fichier à partir du fichier .jasper avec le scriptlet j'obtiens cette erreur :

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
Exception in thread "main" net.sf.jasperreports.engine.JRException: Error loading scriptlet class : Switch_avec_dates2Scriptlet
	at net.sf.jasperreports.engine.fill.JRFillDataset.createScriptlet(JRFillDataset.java:459)
	at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java:572)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1211)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:842)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:791)
	at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:363)
	at ExportHtml.html.main(html.java:43)
Caused by: java.lang.ClassNotFoundException: Switch_avec_dates2Scriptlet
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Unknown Source)
	at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForRealName(JRClassLoader.java:179)
	at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForName(JRClassLoader.java:119)
	at net.sf.jasperreports.engine.fill.JRFillDataset.createScriptlet(JRFillDataset.java:454)
	... 8 more
Il ne trouve donc pas ma fonction contenue dans mon .class. J'ai essayé d'ajouter le chemin vers le .class dans la variable d'environnement CLASSPATH, mais j'ai toujours la même erreur.

Connaîtriez-vous un moyen de lui indiquer le chemin de mon fichier .class??

Merci d'avance pour votre aide