Importation d'un fichier .class sous ubuntu
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:
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:
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