我想将我的servlet部署到GAE,但要以下错误
HTTP ERROR 500
问题访问/条形码。原因:
java.awt.Rectangle is a restricted class. Please see the Google App Engine developer's guide for more details.
由:
引起java.lang.noclassdeffounderror:java.awt.Rectangle是一个受限制的类。请参阅《 Google App Engine开发人员指南》以获取更多详细信息。 在com.google.appengine.tools.development.agent.runtime.runtime.reject(runtime.java:50( 在com.barcodelib.barcode.A.B.A。(A.Java( 在com.barcodelib.barcode.a.b.c。(c.java( 在com.barcodelib.barcode.a.i。(i.java( 在com.barcodelib.barcode.pdf417.a(pdf417.java( 在com.barcodelib.barcode.abstractbarcode.renderbarcode(AbstractBarcode.java( 在pdf417barcodes.doget(pdf417barcodes.java:49( 在javax.servlet.http.httpservlet.service(httpservlet.java:617(
servlet
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException
{
try {
PDF417 barcode = new PDF417();
barcode.setData("PDF417");
ServletOutputStream servletoutputstream = response.getOutputStream();
response.setContentType("image/jpeg");
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
// Generate PDF-417 barcode & output to ServletOutputStream
barcode.renderBarcode(servletoutputstream);
} catch (Exception e) {
throw new ServletException(e);
}
}
它可以与tomcat合作,但不与GAE一起工作,请帮助我。
GAE不支持标准JDK的所有类。请参阅以下链接
https://cloud.google.com/appengine/docs/standard/java/jrewhitelist
在这里您将找到允许的类列表。似乎您的PDF417 BarCodelib库正在使用不允许的类。因此,您的应用程序将在标准和独立的tomcat上运行,但不能在GAE上运行。
您的条形码库使用java.awt.Rectangle
,并且正如错误消息所述,这是一个受限制的类。此限制仅适用于GAE,这不是一般限制,这就是为什么它在tomcat中起作用。
此页面https://cloud.google.com/appengine/docs/standard/java/jrewhitelist列表所有允许 jre class类在那里列出了它将失败。
您可以不使用GAE,也可以尝试找到广告为GAE"安全"的库(免责声明:我不知道是否存在这样的库(。