How to use external jars and java.awt on server side

285 views
Skip to first unread message

RhinestoneMaster

unread,
Jul 30, 2010, 6:24:47 PM7/30/10
to Google Web Toolkit
We're trying to convert a pdf to an image using a software called
JPedal. This software is in an external jar. Our development
environment is in eclipse.

If we include the BufferedImage class in our code, we get this
compiler error:
java.awt.image.BufferedImage is not supported by Google App Engine's
Java runtime environment.

Also, after adding the JPedal jars to the eclipse library our code
looks like this:
String url="C:/2007NissanTowingGuide.pdf";
/**instance of PdfDecoder to convert PDF into image From JPedal*/
PdfDecoder decode_pdf = new PdfDecoder(true);

/**set mappings for non-embedded fonts to use*/
PdfDecoder.setFontReplacements(decode_pdf);

/**open the PDF file - can also be a URL or a byte array*/
try {
decode_pdf.openPdfFile(url);

/**get page 1 as an image*/
//page range if you want to extract all pages with a loop
//int start = 1, end = decode_pdf.getPageCount();
//BufferedImage img=decode_pdf.getPageAsImage(1);

/**close the pdf file*/
decode_pdf.closePdfFile();

//RenderedImage rendImage = img;

// Save as JPEG
File file = new File("yimage.jpg");
//ImageIO.write(rendImage, "jpg", file);
System.out.println("It worked");


} catch (PdfException e) {
e.printStackTrace();
}
and we get the following exception:
java.lang.NoClassDefFoundError: org/jpedal/exception/PdfException
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153)
at
org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:
428)
at
org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:
339)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
487)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1166)
at
com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:
51)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
43)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:
122)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
388)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:
70)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at com.google.appengine.tools.development.JettyContainerService
$ApiProxyHandler.handle(JettyContainerService.java:349)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
542)
at org.mortbay.jetty.HttpConnection
$RequestHandler.content(HttpConnection.java:938)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
409)
at org.mortbay.thread.QueuedThreadPool
$PoolThread.run(QueuedThreadPool.java:582)
Caused by: java.lang.ClassNotFoundException:
org.jpedal.exception.PdfException
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
com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:
151)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 33 more

Is there any way to resolve these errors or is there gwt-compatible
way to convert PDFs to images?

Thanks a lot!

nacho

unread,
Aug 1, 2010, 11:51:59 AM8/1/10
to Google Web Toolkit
If the lib is not supported by app engine you will need to deploy into
another server, for example a Tomcat.

Thomas Dvornik

unread,
Aug 2, 2010, 3:23:36 PM8/2/10
to Google Web Toolkit
Where is the jar located? If needs to be in war/WEB-INF/lib.

Can you use a an InputStream instead of a BufferedImage?

Tom
Reply all
Reply to author
Forward
0 new messages