Google app engine+StampBarcode+pdf417 Api

Я хочу развернуть свой сервлет в 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.aba (a.java) на com.barcodelib.barcode.abc (c.java) в com.barcodelib.barcode.ai (i.java) в com.barcodelib.barcode.PDF417.a(PDF417.java) в com.barcodelib.barcode.AbstractBarcode.renderBarcode(AbstractBarcode.java) в PDF417Barcodes.doGet(PDF417Barco (PDF417Barco).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, пожалуйста, помогите мне.

2 ответа

Решение

Ваша библиотека штрих-кодов использует java.awt.Rectangleи, как говорится в сообщении об ошибке, это ограниченный класс. Это ограничение относится только к GAE, это не общее ограничение, поэтому оно работает в Tomcat.

На этой странице https://cloud.google.com/appengine/docs/standard/java/jrewhitelist перечислены все разрешенные классы JRE, поэтому, если вы прямо или косвенно используете класс, которого там нет в списке, произойдет сбой.

Вы можете либо не использовать GAE, либо попытаться найти библиотеку, которая рекламирует GAE как "безопасную" (отказ от ответственности: я не знаю, существует ли такая библиотека).

GAE не поддерживает все классы из стандартного JDK. Пожалуйста, смотрите следующую ссылку

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

Здесь вы найдете список разрешенных классов. Похоже, что ваша библиотека pdf417 barcodelib использует недопустимый класс. Таким образом, ваше приложение будет работать на стандартном и автономном tomcat, но не на GAE.

Другие вопросы по тегам