我創建了一個Java項目,它將使用JasperReports API。我已經在內部和外部測試了這個NetBeans(同一臺機器),它工作正常。但是當我嘗試在另一臺機器上運行它時,報告不會加載。在不同機器上使用JasperReports API運行代碼問題
我的代碼是:
package reportmonitory;
import java.sql.*;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.swing.JRViewer;
import javax.swing.*;
public class monthlyreport extends JFrame {
Connection con;
Statement stmt;
ResultSet rs;
void showReport() {
try {
String host = "jdbc:mysql://192.168.10.11/rmcdb";
String uName = "root";
String uPass = "";
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection(host, uName, uPass);
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
String reportName = "reports/finalreport.jasper";
java.io.InputStream is = this.getClass().getClassLoader().getResourceAsStream(reportName);
JasperPrint print = JasperFillManager.fillReport(is, null, con);
JRViewer viewer = new JRViewer(print);
viewer.setOpaque(true);
viewer.setVisible(true);
this.add(viewer);
this.setSize(1000, 1000);
this.setVisible(true);
this.setDefaultCloseOperation(HIDE_ON_CLOSE);
} catch (Exception ex) {
System.out.println("CAUSE: " + ex.getCause());
System.out.println("MESSAGE" + ex.getMessage());
System.out.println("LOCAL MESSAGE" + ex.getLocalizedMessage());
ex.printStackTrace();
}
}
public static void main(String args[]) {
new monthlyreport().showReport();
}
}
你有什麼異常嗎?並在哪一行代碼被拋出? – Pr0gr4mm3r 2012-08-15 13:24:55
根據顯示的異常(你沒有包含在你的問題中),它可能是缺少mysql驅動程序,另一臺機器中的網絡問題導致它無法連接到數據庫,數據庫中的權限從其他機器,...)。 – Alfabravo 2012-08-15 14:28:16
感謝我的jar文件的所有其他功能在其他機器上工作,例如,將數據發佈到數據庫並檢索它。它只是ireport不工作。當jar文件在另一臺機器上運行時,我將無法運行 – chalasa 2012-08-16 05:12:19