PDA

View Full Version : سوال: مشکل در اولین report با جاوا



spiderman200700
شنبه 12 آذر 1390, 21:44 عصر
سلام به همه ی دوستان.
من اولین باره که میخوام با جاوا گزارش گیری کنم.
این کد رو نوشتم:
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

public class JasperReportsDemoApp {
public static void main(String[] args) {
String reportSource = "report/templates/HelloReportWorld.jrxml";
String reportDest = "report/results/HelloReportWorld.jasper";
Map<String, Object> params = new HashMap<String, Object>();
try {
JasperCompileManager.compileReportToFile(reportSou rce, reportDest);//توی این خط استسنا پیش میاد
JasperPrint jasperPrint =JasperFillManager.fillReport(reportDest, params, new JREmptyDataSource());
JasperViewer.viewReport(jasperPrint);
} catch (JRException ex) {
ex.printStackTrace();
}
}
}

همه ی libraries ها هم اضافه کردم. فایل reportSource هم در پوشه ای که نوشتم وجود داره.ولی موقه run کردن .استسنای زیر پیش میاد:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester
at net.sf.jasperreports.engine.JasperCompileManager.c ompileReportToFile(JasperCompileManager.java:108)
at javaclass.JasperReportsDemoApp.main(JasperReportsD emoApp.java:24)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.digester.Digester
at java.net.URLClassLoader$1.run(URLClassLoader.java: 366)
at java.net.URLClassLoader$1.run(URLClassLoader.java: 355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.j ava:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:4 23)
at sun.misc.Launcher$AppClassLoader.loadClass(Launche r.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:3 56)
... 2 more
Java Result: 1

کسی میدونه مشکل از کجاس؟
ممنون میشم جوابمو بدید.

ermia2008
یک شنبه 13 آذر 1390, 22:29 عصر
سلام
لایبری commons-digester رو هم به برنامتون اضافه کنید احتمالا مشکل حل بشه

spiderman200700
یک شنبه 13 آذر 1390, 23:04 عصر
ممنون از جوابتون.
درست گفتید.ولی وقتی commons-digester رو اضافه کردم ، خطای نبودن یه لایبراری دیگه رو میداد.
خلاصه بعد از اضافه کردن 6 تا لایبراری دیگه مشکل حل شد.
ممنونم از راهنمایی شما.

spiderman200700
یک شنبه 13 آذر 1390, 23:09 عصر
به یه مشکل دیگه هم برخورد کردم.
وقتی گزارشمو توی به صورت PDF اکسپورت میکنم،فقط نوشته های انگلیسی داخل فایل PDF نوشته میشه یعنی هیچکدوم از نوشته های فارسی توی PDF وجود نداره.
دوستان به نظرتون چطوری این مشکل رو حل کنم.

L u k e
دوشنبه 14 آذر 1390, 11:27 صبح
یه جستجو کن در مورد مشکل export pdf unicode

spiderman200700
دوشنبه 14 آذر 1390, 14:46 عصر
در این مورد خیلی جستجو کردم،چندتایی هم روش گفته بودن که من هر کدوم رو امتحان میکنم بازم نمیشه.
برای تکمیل کارم خیلی بهش احتیاج دارم.
کسی هست که این کار رو کرده باشه؟
لطفا راهنماییم کنید.

spiderman200700
سه شنبه 15 آذر 1390, 23:17 عصر
کسی نیست که گزارش رو به صورت pdf گرفته باشه.
منتظر راهنمایی هاتون هستم.

mazdadoost
سه شنبه 15 آذر 1390, 23:24 عصر
سلام :
یک فونت تروتایپ یونیکد هم تو کلاس پت برنامه بذارید و امتحان کنید.
همچنین :
http://jasperforge.org/uploads/publish/jasperreportswebsite/trunk/config.reference.html#net.sf.jasperreports.default .pdf.encoding
و
http://stackoverflow.com/questions/3672607/exporting-a-jasperreport-to-pdf-characters-missing

spiderman200700
چهارشنبه 16 آذر 1390, 01:30 صبح
با تشکر از شما، جناب mazdadoost عزیز.
مشکلم حل شد.
فقط با گذاشتن یه فونت یونیکد توی classpath و دادن اسم فونت به برنامه،مشکل حل شد.
اصلا فکر نمیکردم اینقدر ساده حل بشه.
همیشه چیزای ساده سخت تر دیده میشن.
فقط یه مشکل بازم باقیمونده.و اون اینه که الآن فقط مقدارهایی که از database خونده میشه فارسی میشه.
یعنی قسمت هایی که توی IReport فارسی تایپ شده(مثل نام ستونها) بازم چاپ نمیشه.
فکر کنم این مشکل رو دیگه باید از توی IReport حل کنم.
یه کم توی IReport می گردم،ببینم حل میشه.
اگه نشد فکر کنم باید بازم مزاحم شما دوستان بشم.
بازم تشکر میکنم از جناب mazdadoost.:قلب:

ashkanksh
پنج شنبه 15 دی 1390, 16:39 عصر
میشه اون جار فایلهایی که بعد از گرفتن ارور اضافه کردی درست شد رو بگی؟ ممنون میشم! اینا رو خود نت بینز گذاشته بود: commons-beanutils-1.8.0.jar
commons-collections-3.2.1.jar
commons-digester-1.7.jar
commons-javaflow-20060411.jar
commons-logging-1.1.jar
iText-2.1.0.jar
jasperreports-3.5.2.jar
jasperreports-3.6.0.jar اینو بالاییش نبود جاش ی دونه دیگه بود داخل مسیر نصب.
jdt-compiler-3.1.1.jar
poi-3.2-FINAL-20081019.jar
xercesImpl-2.7.0.jar این هم نداشتمش:دی

حالا آیا فکر میکنی جواب بهم نمیده دلیلش همین سه تاست یا باید چیز دیگه ای هم اضافه کنم؟

مرسِی



ویرایش: اروری که میده اینه قسمت اولش:org/codehaus/groovy/control/CompilationFailedException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at net.sf.jasperreports.engine.util.JRClassLoader.loa dClassForRealName(JRClassLoader.java:157)
at net.sf.jasperreports.engine.util.JRClassLoader.loa dClassForName(JRClassLoader.java:115)
at net.sf.jasperreports.engine.JasperCompileManager.g etCompiler(JasperCompileManager.java:511)
at net.sf.jasperreports.engine.JasperCompileManager.c ompileReport(JasperCompileManager.java:215)
کدم هم اینه:
try {
JasperDesign jd = JRXmlLoader.load("C:\\report1.jrxml");
JasperReport jr= JasperCompileManager.compileReport(jd);//khata inja rokh mide
Connection c = pDAO.getConnection();
JasperPrint jp = JasperFillManager.fillReport(jr, null,c);
JasperViewer.viewReport(jp,false);
} catch (JRException ex) {
JOptionPane.showMessageDialog(null, ex);
}

spiderman200700
پنج شنبه 15 دی 1390, 17:28 عصر
سلام.
فکر نمیکنم مشکل از لایبراری ها باشه.
احتمالا مشکل از فایل jrxml باشه.
اگه این فایل رو توی ireport تهیه کردی ،مطمئن شو که اونجا درست کار میکنه.

در هر صورت فایلهایی که من به پروژه اضافه کردم ایناس:
80224

ashkanksh
پنج شنبه 15 دی 1390, 21:45 عصر
داخل خود برنامه کامپایل میشه و اجرا که میگیرم بسته به اون فرمتی که میخوام بهم خروجی میده و درسته! از کد نیست؟
مرسی

ویرایش:
با اونایی که گفتی اضافه کردم درست شد مرسی! خیلی لطف کردی! اما عجیبه که سایت نت بینز کم گذاشته بود اونایی که باید اضافه شه رو!!!