【问题标题】:ORA-29532: Java call terminated by uncaught Java exception: java.lang.NoClassDefFoundErrorORA-29532: Java 调用被未捕获的 Java 异常终止: java.lang.NoClassDefFoundError
【发布时间】:2019-07-22 08:39:44
【问题描述】:

在 sql developer 中运行以下代码时出现以下错误:

创建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.

【问题讨论】:

  • 除了机器人问题:尝试访问文件系统时,您的方法将失败。 Java 存储过程访问 server 文件系统(您的主目录可能不存在)并且需要特殊权限。
  • 感谢您的回复,但您能否告诉我是否有任何方法可以使用 plsql 运行这个 java 程序?还是不可能?

标签: java oracle plsql oracle-sqldeveloper noclassdeffounderror


【解决方案1】:

您正在使用java.awt.Robot,它需要一个图形化、非无头环境才能正常工作,而数据库服务器不提供它。根据User Interfaces on the ServerOracle 文档:

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

【讨论】:

  • 感谢您的回复,但您能否告诉我是否有任何方法可以使用 plsql 运行这个 java 程序?还是不可能?
猜你喜欢
  • 1970-01-01
  • 2013-04-27
  • 2011-11-07
  • 1970-01-01
  • 2010-11-25
  • 2012-10-26
  • 2010-10-16
  • 2013-08-08
相关资源
最近更新 更多