我想将我的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,请帮助我。
答案 0 :(得分:1)
GAE不支持标准JDK中的所有类。请参阅以下链接
https://cloud.google.com/appengine/docs/standard/java/jrewhitelist
在这里,您将找到允许的类列表。似乎您的pdf417条形码库正在使用不允许的类。因此,您的应用程序将在标准和独立的tomcat上运行,但不在GAE上运行。
答案 1 :(得分:0)
您的条形码库使用java.awt.Rectangle
,并且正如错误消息所述,它是受限制的类。此限制仅适用于GAE,它不是一般限制,这就是它在Tomcat中工作的原因。
此页面https://cloud.google.com/appengine/docs/standard/java/jrewhitelist列出了所有允许的 JRE类,因此,如果您直接或间接使用未列出的类,则会失败。
你可以不使用GAE,或者尝试找到一个宣传为GAE"安全" (免责声明:我不知道这样的图书馆是否存在)。