ORA-29532:Java调用因未捕获的Java异常而终止:java.lang.NoClassDefFoundError

时间:2019-02-28 12:17:45

标签: java oracle plsql oracle-sqldeveloper noclassdeffounderror

在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 :(得分:4)

您正在使用java.awt.Robot,它需要一个图形化,无头的环境来正常工作,而数据库服务器未提供该环境。根据{{​​3}} Oracle文档:

  

Oracle数据库在服务器上提供了所有核心Java类库,包括与用户界面表示相关的类。但是,在服务器上运行的代码尝试在服务器上实现或显示用户界面是不合适的。不应期望或不允许在Oracle JVM环境中运行应用程序的用户与运行Oracle数据库的服务器的显示和输入硬件进行交互或依赖它们。