我想请你帮忙解决一些问题。 我想知道如何从jasperserver存储库打印报告。 我花时间谷歌搜索了一段时间,但仍然无法解决它。 我有这个来源,但它不起作用。有人能解决吗? 任何想法?请帮帮我。
1.这是源代码:
package com.src.report;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
import com.jaspersoft.jasperserver.api.metadata.xml.domain.impl.ResourceDescriptor;
import com.jaspersoft.jasperserver.irplugin.JServer;
import com.jaspersoft.jasperserver.irplugin.wsclient.WSClient;
public class PrintService {
private static JServer server = null;
public static void ConnectionString(String webServiceUrl, String username, String password){
server = new JServer();
server.setUsername(username);
server.setPassword(password);
server.setUrl(webServiceUrl);
}
public static void runReports(String webServiceUrl, String username, String password) throws Exception{
ConnectionString(webServiceUrl, username, password);
WSClient client = new WSClient(server);
ResourceDescriptor resourceDescriptor = new ResourceDescriptor();
resourceDescriptor.setUriString ("/reports/samples/EmployeeAccounts");
Map<String, Object> parameterMap = new HashMap<String, Object>();
parameterMap.put("MY_PARAMETER_NAME", "myparametervalue");
JasperPrint printer = client.runReport(resourceDescriptor, parameterMap);
JasperViewer.viewReport(printer, false, Locale.ENGLISH);
}
public static void main(String[] args) throws Exception {
String webServiceUrl = "http://localhost:8080/jasperserver-pro/services/repository";
String username = "jasperadmin";
String password = "jasperadmin";
runReports(webServiceUrl, username, password);
}
}
2.这里是错误信息:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xerces/parsers/AbstractDOMParser
at com.jaspersoft.jasperserver.irplugin.wsclient.WSClient.<init>(WSClient.java:73)
at com.src.report.PrintService.runReports(PrintService.java:37)
at com.src.report.PrintService.main(PrintService.java:51)
Caused by: java.lang.ClassNotFoundException: org.apache.xerces.parsers.AbstractDOMParser
at java.net.URLClassLoader$1.run(Unknown Source)
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)
... 3 more
答案 0 :(得分:1)
http://<host>:8080/jasperserver-pro/rest_v2/reports/pathofReport/reportID.format?j_username=username&j_password=password
答案 1 :(得分:1)
当我用Google搜索一段时间后,我找到了一些与上述问题相关的解决方案。我的目的不是为了声誉或其他任何东西,而是想告诉那些得到与我相同问题的人。
我的解决方案在这里:
1 /要求Jar文件:
2 /编码:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package jaspersoft.src.jasperprint;
import net.sf.jasperreports.engine.JasperPrint;
import com.jaspersoft.jasperserver.irplugin.JServer;
import com.jaspersoft.jasperserver.api.metadata.xml.domain.impl.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.export.JRPrintServiceExporter;
import net.sf.jasperreports.engine.export.JRPrintServiceExporterParameter;
/**
*
* @author Administrator
*/
public class JasperPrintTest {
private static JServer server = null;
public JasperPrintTest(String webServiceUrl, String username, String password){
server = new JServer();
server.setUsername(username);
server.setPassword(password);
server.setUrl(webServiceUrl);
}
public List list(String uri) throws Exception{
ResourceDescriptor rd = new ResourceDescriptor();
rd.setWsType(ResourceDescriptor.TYPE_FOLDER);
rd.setUriString(uri);
return server.getWSClient().list(rd);
}
public ResourceDescriptor get(String uri) throws Exception{
return get(uri, null);
}
public ResourceDescriptor get(String uri, List arg) throws Exception{
ResourceDescriptor rd = new ResourceDescriptor();
rd.setWsType(ResourceDescriptor.TYPE_REPORTUNIT);
rd.setUriString(uri);
return server.getWSClient().get(rd, null,arg);
}
public JasperPrint runReports(String reportUnit, Map params) throws Exception{
ResourceDescriptor rd = new ResourceDescriptor();
rd.setWsType(ResourceDescriptor.TYPE_REPORTUNIT);
rd.setUriString(reportUnit);
return server.getWSClient().runReport(rd, params);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception {
// TODO code application logic here
String webServiceUrl="http://localhost:8080/jasperserver-pro/services/repository";
String username= "jasperadmin";
String password = "jasperadmin";
String printer = "Foxit Reader PDF Printer";
String reporturi = "/reports/samples/AllAccounts";
JasperPrintTest object = new JasperPrintTest(webServiceUrl,username,password);
JasperPrint jasperPrint = new JasperPrint();
Map parameterMap = new HashMap();
try {
jasperPrint = object.runReports(reporturi, parameterMap);
} catch (Exception ex) {
Logger.getLogger(ClassForm.class.getName()).log(Level.SEVERE, null, ex);
}
PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
PrintService printService = null;
for(PrintService ps : printServices){
if(ps.getName().equals(printer)){
printService = ps;
break;
}
}
if(printService !=null)
{
JRExporter jrExporter = new JRPrintServiceExporter();
jrExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
jrExporter.setParameter(JRPrintServiceExporterParameter.PRINT_SERVICE, printService);
jrExporter.setParameter(JRPrintServiceExporterParameter.PRINT_SERVICE_ATTRIBUTE_SET,
printService.getAttributes());
jrExporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG, Boolean.FALSE);
jrExporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG, Boolean.TRUE);
try {
jrExporter.exportReport();
} catch (JRException ex) {
Logger.getLogger(ClassForm.class.getName()).log(Level.SEVERE, null, ex);
}
}
else
{
System.out.println("Printer is not defined");
}
}
}
3 /结果:
注意:但一切都不是动态的。请注意。