ORA-29532: Вызов Java завершен из-за необработанного исключения Java: java.lang.NoClassDefFoundError - PullRequest
0 голосов
/ 28 февраля 2019

Я получаю следующую ошибку при запуске следующего кода в SQL-разработчике:

создание исходного кода Java-

CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED demoskr1 AS
package ScreenShot;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.*;

class demoskr1
{
public static void main(String args[]) throws Exception
{
  try{      
                            Thread.sleep(5000);
                            Robot awt_robot = new Robot();
                            String path = "C:\\Users\\pbafna\\workspace\\shot.jpg"; 
                            BufferedImage Entire_Screen = awt_robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
                            ImageIO.write(Entire_Screen, "jpg", new File(path));
                            System.out.println("Screenshot saved");
 }
  catch (Exception e) {
              System.out.println("Something went wrong.");
                  }   
  }
  };

Созданиепроцедура -

create or replace procedure proc_capture 
as 
 language Java 
 name 'demoskr1.main(java.lang.String[])';

Выполнение процедуры -

 begin
  proc_capture();
  end;

После выполнения этой операции я получаю следующую ошибку:

ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundError
ORA-06512: at "XXOSC.PROC_CAPTURE", line 1
ORA-06512: at line 2
29532. 00000 -  "Java call terminated by uncaught Java exception: %s"
*Cause:    A Java exception or error was signaled and could not be
           resolved by the Java code.
*Action:   Modify Java code, if this behavior is not intended.

1 Ответ

0 голосов
/ 28 февраля 2019

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

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

...