0

我想将我的 servlet 部署到 GAE 但出现以下错误

HTTP ERROR 500

访问 /barcodes 时出现问题。原因:

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.aba(a.java) 在 com.barcodelib.barcode.abc(c.java ) at com.barcodelib.barcode.ai(i.java) at com.barcodelib.barcode.PDF417.a(PDF417.java) at com.barcodelib.barcode.AbstractBarcode.renderBarcode(AbstractBarcode.java) at 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一起工作,请帮助我。

4

2 回答 2

1

GAE 不支持标准 JDK 中的所有类。请看以下链接

https://cloud.google.com/appengine/docs/standard/java/jrewhitelist

在这里,您将找到允许的课程列表。似乎您的 pdf417barcodelib 库正在使用不允许的类。因此,您的应用程序将在标准和独立的 tomcat 上运行,但不能在 GAE 上运行。

于 2017-04-21T06:30:50.567 回答
0

您的条形码库使用java.awt.Rectangle,并且如错误消息所述,它是一个受限类。此限制仅适用于 GAE,它不是一般限制,这就是它在 Tomcat 中起作用的原因。

此页面https://cloud.google.com/appengine/docs/standard/java/jrewhitelist列出了所有允许的JRE 类,因此如果您直接或间接使用未列出的类,它将失败。

您可以不使用 GAE,或者尝试找到一个标榜 GAE“安全”的库(免责声明:我不知道这样的库是否存在)。

于 2017-04-21T06:32:13.773 回答