Jasperreport in Java Ausführen

achillesat

Aktives Mitglied
Ich möchte einen Bericht aus JasperReport in Java ausführen... bisher habe ich folgenden Code geschrieben :

Java:
public class ReportDriver {
	
	// Hostname
	private static String dbHost = "....";

	// Port -- Standard: 3306
	private static String dbPort = "3306";

	// Datenbankname
	private static String database = "....";

	// Datenbankuser
	private static String dbUser = "....";

	// Datenbankpasswort
	private static String dbPassword = "....";
    
    public ReportDriver() {
        
    }
    
    public static Connection connectDB(String dbHost,String database, String dbUser, String dbPassword) {
        Connection jdbcConnection = null;
        try{
            Class.forName("com.mysql.jdbc.Driver");
            jdbcConnection = DriverManager.getConnection("jdbc:mysql://" + dbHost + "/" // hole eine Verbindung zur DB
			+ database, dbUser, dbPassword);;
        }catch(Exception ex) {
            String connectMsg = "Could not connect to the database: " + ex.getMessage() + " " + ex.getLocalizedMessage();
            System.out.println(connectMsg);
        }
        return jdbcConnection;
    }
    

    public static void runReport(String dbHost,String database, String dbUser,String dbPassword,String reportFile) {
        try{
            JasperDesign jasperDesign = JRXmlLoader.load(reportFile);
            JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
            Connection jdbcConnection = connectDB(dbHost,database,dbUser,dbPassword);
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, jdbcConnection);
            JasperViewer.viewReport(jasperPrint);
        }catch(Exception ex) {
            String connectMsg = "Could not create the report " + ex.getMessage() + " " + ex.getLocalizedMessage();
            System.out.println(connectMsg);
        }
    }
    
    public static void main(String[] args) {
    	
            String dbHost = args[0] ;
            String database = args[1];
            String dbUser = args[2];
            String dbPassword = args[3];
            String reportFile = args[4]; 
            runReport(dbHost,database,dbUser,dbPassword);
        
        return;
        
    }
}


Wenn ich versuche den Code auszuführen erscheint folgende Fehlermeldung:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method runReport(String, String, String, String, String) in the type ReportDriver is not applicable for the arguments (String, String, String, String)


Kann mir jemand sagen was das ist und ist der Rest des Quellcodes so in Ordnung? Falls nicht würde ich mich sehr über Tipps bzw. Verberssungsvorschläge freuen 😉
 
Hi,
die Fehlermeldung:

"The method runReport(String, String, String, String, String) in the type ReportDriver is not applicable for the arguments (String, String, String, String)"

sagt dass die Methode runReport als Parameter 5 Strings braucht,
beim Aufruf bekommt die Methode aber nur 4 (Parameter reportFile fehlt).

...hoffe das hilft erstmal weiter.

vG
 
Bei mir kommt eine Exception nach der anderen. Wenn ich die eine behoben habe, erscheint immer eine neue...


Mein Code sieht jetzt bis jetzt so aus: (Bin zwar noch ein Anfänger in Sachen Java, aber meiner Meinung nach sieht der Quelltext richtig aus...)

Java:
public class ReportDriver {
	
 public static Connection connectDB(String dbHost,String database, String dbUser, String dbPassword) {
        Connection jdbcConnection = null;
        try{
            Class.forName("com.mysql.jdbc.Driver");
            jdbcConnection = DriverManager.getConnection("jdbc:mysql://" + dbHost + "/" // hole eine Verbindung zur DB
			+ database, dbUser, dbPassword);;
        }catch(Exception ex) {
            String connectMsg = "Could not connect to the database: " + ex.getMessage() + " " + ex.getLocalizedMessage();
            System.out.println(connectMsg);
        }
        return jdbcConnection;
    }
    

    public static void runReport(String dbHost,String database, String dbUser,String dbPassword,String reportFile) {
        try{
            JasperDesign jasperDesign = JRXmlLoader.load(reportFile);
            JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
            Connection jdbcConnection = connectDB(dbHost,database,dbUser,dbPassword);
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, jdbcConnection);
            JasperViewer.viewReport(jasperPrint);
        }catch(Exception ex) {
            String connectMsg = "Could not create the report " + ex.getMessage() + " " + ex.getLocalizedMessage();
            System.out.println(connectMsg);
        }
    }
    
    public static void main(String[] args) {
    	
            String dbHost = "";
            String database = "";
            String dbUser = "";
            String dbPassword = "";
            String reportFile = "C:\\Vorlage.Jrxml"; 
            runReport(dbHost,database,dbUser,dbPassword,reportFile);
        
        return;
        
    }
}


Wenn ich diesen Code ausführe kommt jetzt folgende Exception:


Exception in thread "main" java.lang.NoSuchMethodError: antlr.LexerSharedInputState.getTokenStartColumn()I


Liegt es an meinem geschriebenen Code oder fehlt noch eine .jar Datei die eingebunden werden muss?
 
Hi,
hast du schon versucht zu debuggen bis zu der Stelle wo der Fehler kommt...

java kann anscheinend die Methode: getTokenStartColumn() nicht finden.
da ich den Aufruf in dem vom dir geposteten Quellcode nicht finden kann würde ich erst einmal
darauf tippen das vielleicht noch eine Bibliothek oder ähnliches fehlen könnte...

vG
 

Zurück
Oben