<p>I am using:</p>
<p>eclipse luna 64bit<br>
windows 8.1</p>
<p> </p>
<p>birt-runtime-4_4_1<br><span style="font-size:10px;">from the following downloadside<br>
"<a data-ipb='nomediaparse' href='
http://www.eclipse.org/downloads/download.php?file=/birt/downloads/drops/R-R1-4_4_1-201409161320/birt-runtime-4_4_1-20140916.zip'>http://www.eclipse.org/downloads/download.php?file=/birt/downloads/drops/R-R1-4_4_1-201409161320/birt-runtime-4_4_1-20140916.zip"</a></span></p>
<p> </p>
<p> </p>
<p>I have added BirtReport to Classpath</p>
<p>I have copied "birt-runtime-4_4_1/ReportEngine/lib/*" to "/project/WebContent/WEB-INF/lib/*"</p>
<p> </p>
<p>I write the following servlet:</p>
<p> </p>
<div>
<pre class="_prettyXprint">
package org.report.print;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Properties;
import java.util.logging.Level;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.birt.core.framework.IPlatformContext;
import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.core.framework.PlatformFileContext;
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.EngineException;
import org.eclipse.birt.report.engine.api.IReportEngine;
import org.eclipse.birt.report.engine.api.IReportEngineFactory;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.PDFRenderOption;
/**
* Servlet implementation class ReportPrintingServlet
*/
@WebServlet("/print")
public class ReportPrintingServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
// private static String REPORT_ENGINE ="C:/dev/libraries/birt-runtime-4_4_1/ReportEngine;
private static String REPORTS_PATH = "C:/dev/workspace/ws05/BirtReportProject01/utilities/reports";
private static String LOG_PATH = "C:/dev/workspace/ws05/BirtReportProject01/utilities/logs";
/**
*
@see HttpServlet#HttpServlet()
*/
public ReportPrintingServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
*
@see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter printWriter = response.getWriter();
printWriter.println("<h1>Hello World!</h1>");
ServletContext servletContext = getServletConfig().getServletContext();
Object attribute = servletContext.getAttribute("reportprintproperties");
Properties properties = (Properties) attribute;
try {
generatePDFFile(properties, request);
} catch (Exception e) {
e.printStackTrace();
}
}
@SuppressWarnings("deprecation")
private void generatePDFFile(Properties properties,
HttpServletRequest request) throws Exception {
IReportEngine engine = null;
IReportRunnable runnable = null;
PDFRenderOption options = new PDFRenderOption();
EngineConfig config = new EngineConfig();
// config.setEngineHome(REPORT_ENGINE);
config.setLogConfig(LOG_PATH, Level.FINE);
IPlatformContext context = new PlatformFileContext();
config.setEngineContext(context);
IReportEngineFactory factory = (IReportEngineFactory) Platform
.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
engine = factory.createReportEngine(config);
try {
runnable = engine.openReportDesign(REPORTS_PATH);
} catch (EngineException e) {
System.err.println("Design " + REPORTS_PATH + " not found!");
e.printStackTrace();
engine.destroy();
}
}
/**
*
@see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}</pre>
<p>I get in the code above a NullPointerException at the CodeLine:</p>
<pre class="_prettyXprint">
engine = factory.createReportEngine(config);</pre>
<p>The error message is:</p>
<div>
<pre class="_prettyXprint">
INFORMATION: Reloading Context with name [/BirtReportPrinting] is completed
java.lang.NullPointerException
at org.report.print.ReportPrintingServlet.generatePDFFile(ReportPrintingServlet.java:132)
at org.report.print.ReportPrintingServlet.doGet(ReportPrintingServlet.java:81)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1556)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1513)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Dez 10, 2014 9:14:24 AM org.apache.catalina.core.StandardContext reload</pre>
</div>
<p> </p>
</div>