ORA-29532: Вызов Java завершен из-за необработанного исключения Java: java.awt.HeadlessException - PullRequest
2 голосов
/ 17 марта 2019

Я выполняю Java-класс для скриншота моего экрана со следующим кодом:

import java.awt.AWTException;
import java.awt.FlowLayout;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class FullScreenCapture extends JFrame {
   private static final long serialVersionUID = 1L;

   public static String capture() {
      FullScreenCapture f = new FullScreenCapture();
      String Ret;
      try {
         Thread.sleep(5000);
         System.setProperty("java.awt.headless", "true");
         Robot robot = new Robot();
         String fileName = "D://FullScreenshot.jpg";

         Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit()
                                     .getScreenSize());
         GraphicsEnvironment ge = 
        GraphicsEnvironment.getLocalGraphicsEnvironment();
        System.out.println("Headless mode: " + ge.isHeadless());
         BufferedImage screenFullImage = robot.createScreenCapture(screenRect);
         ImageIO.write(screenFullImage, "jpg", new File(fileName));
         Ret ="Capture Saved Successfully";
      } catch (Exception e) {
               System.out.println("Exception occurred");
               Ret ="Wrong Error";
      }
      return Ret;
   }

}

программа не имеет проблем при выполнении в NetBeans или в CMD, но при загрузке Java-класса Java в базу данных Oracle чтобы вызвать его как функцию, верните сообщение об ошибке java.awt.HeadlessException

enter image description here enter image description here

1 Ответ

0 голосов
/ 17 марта 2019

Вы используете java.awt.Robot, для работы которой требуется графическая среда без головы. Согласно Robot() Javadoc :

AWTException - если конфигурация платформы не позволяет низкоуровневое управление вводом. Это исключение всегда выдается, когда GraphicsEnvironment.isHeadless () возвращает true

Сервер базы данных Oracle не предоставляет графическую среду, поэтому он не может запустить ваш код. Согласно Пользовательские интерфейсы на сервере Документы Oracle:

База данных Oracle предоставляет все основные библиотеки классов Java на сервере, включая библиотеки, связанные с представлением пользовательских интерфейсов. Однако для кода, выполняемого на сервере, неуместно пытаться материализовать или отобразить пользовательский интерфейс на сервере. От пользователей, запускающих приложения в среде Oracle JVM, нельзя ожидать, что им будет позволено взаимодействовать или зависеть от аппаратных средств отображения и ввода данных сервера, на котором работает база данных Oracle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...