الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما الطريقة الصحيحة لربط التقرير ببرنامج جافا

بدأه rohaili في 2 أغسطس 2010 · 3 رد · 850 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

منذ يومين وأنا أقرأ عن ربط التقارير بالجافا وأحاول التطبيق ولم تفلح كل محاولاتي ، وهذه آخر محاولة أضعها بين أيديكم لتساعدوني في معرفة الخطأ الذي لم أستطع معرفته

أنشأت تطبيق desktop باستخدام netbeans وأضفت الأوامر التالية بعد الدالة initComponents()


try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/reportdata", "root", "a");
JasperPrint jp = JasperFillManager.fillReport("F:\\reports\\report1.jasper", null, conn);
mainPanel.setLayout(new java.awt.BorderLayout());
mainPanel.add(new JRViewer(jp));
} catch (ClassNotFoundException ex) {
Logger.getLogger(RohailireportView.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(RohailireportView.class.getName()).log(Level.SEVERE, null, ex);
} catch (JRException ex) {
Logger.getLogger(RohailireportView.class.getName()).log(Level.SEVERE, null, ex);
}

ثم أضفت المكتبات اللازمة للمشروع ولا يوجد أي خطأ في التطبيق ، لكن عند التنفيذ يظهر الخطأ التالي


Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/codehaus/groovy/control/CompilationFailedException
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
at java.lang.Class.getConstructor0(Class.java:2699)
at java.lang.Class.newInstance0(Class.java:326)
at java.lang.Class.newInstance(Class.java:308)
at net.sf.jasperreports.engine.JasperCompileManager.getCompiler(JasperCompileManager.java:472)
at net.sf.jasperreports.engine.JasperCompileManager.loadEvaluator(JasperCompileManager.java:238)
at net.sf.jasperreports.engine.fill.JRFillDataset.createCalculator(JRFillDataset.java:421)
at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:428)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:76)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:86)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:56)
at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:142)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:52)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247)
at rohailireport.RohailireportView.<init>(RohailireportView.java:33)
at rohailireport.RohailireportApp.startup(RohailireportApp.java:19)
at org.jdesktop.application.Application$1.run(Application.java:171)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassNotFoundException: org.codehaus.groovy.control.CompilationFailedException
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
... 27 more

وهذه أوامر sql الخاصة بانشاء القاعدة


DROP TABLE IF EXISTS `reportdata`.`table1`;
CREATE TABLE `reportdata`.`table1` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(45) NOT NULL,

PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

مرفق ملف report1.jasper

مرفق المشروع كاملا

reports.zip

rohailireport.zip

تم تعديل هذه المشاركة بواسطة rohaili في 2 أغسطس 2010 في 14:12

300_130.gif

#2

السلام عليكم

مرحبا بك اخ رحيلى بعد طول غياب

اراك تستخدم JRViewer والذى هو عبارة عن JPanel لعرض التقرير

فلماذا لا تستخدم net.sf.jasperreports.view.JasperViewer والذى هو JFrame

مباشرة

وفى جملة تعبئة التقرير لا ترسل لها Hashtable بينما كتبت null

والمكتبات التى تستخدمها ليست كافية قم بتحميل المكتبات الموجودة فى دروس التقارير فى المنتدى للاخ محمد فتحى

واستخدمها فهى كاملة وكافية

وقد قمت ببعض التعديلات على الكود الخاص بك

Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/reportdata", "root", "a");
            JasperPrint jp = JasperFillManager.fillReport("F:\\reports\\report1.jasper", new Hashtable(), conn);

            JasperViewer viewer = new JasperViewer(jp, false);
            viewer.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            viewer.setModalExclusionType(JDialog.ModalExclusionType.TOOLKIT_EXCLUDE);
            viewer.setTitle("my title");
            viewer.setExtendedState(JFrame.MAXIMIZED_BOTH);
            viewer.setLocationRelativeTo(null);
            viewer.setVisible(true);
            viewer.toFront();
            //mainPanel.setLayout(new java.awt.BorderLayout());
            //mainPanel.add(new JRViewer(jp) );

جربه واذا حدثت مشاكل اخبرنا

لعلنا نستطيع مساعدتك

تحياتى

تم تعديل هذه المشاركة بواسطة Oracle_Java في 2 أغسطس 2010 في 16:01


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#3

وعليكم السلام ورحمة الله وبركاته

جزاك الله خيرا

أبشرك أنه قد عمل بعد تحميل المكتبات من موضوع التقارير لمحمد فتحي

سواء باستخدام new Hashtable() أو null

ولكن المكتبات كثيرة جدا كيف يمكن معرفة الحد الأدنى لتشغيل البرنامج فقط .

300_130.gif

#4
rohaili كتب:

ولكن المكتبات كثيرة جدا كيف يمكن معرفة الحد الأدنى لتشغيل البرنامج فقط .

صراحة لم اجرب الاستغناء عن احدهم وأظن انهم كلهم مهمين لتشغيل التقارير

يمكنك التجربة واخبارنا بالنتيجة (بعد اذنك طبعا)

سلام


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…