【问题标题】:ORA-29532: Java call terminated by uncaught Java exception: java.awt.HeadlessExceptionORA-29532: Java 调用被未捕获的 Java 异常终止: java.awt.HeadlessException
【发布时间】:2019-03-17 11:31:43
【问题描述】:

我使用以下代码执行 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

【问题讨论】:

    标签: java oracle plsql


    【解决方案1】:

    您正在使用java.awt.Robot,它需要一个图形化、非无头环境才能工作。根据Robot() javadoc

    AWTException - 如果平台配置不允许低级输入控制。当 GraphicsEnvironment.isHeadless() 返回 true 时总是会抛出这个异常

    Oracle 数据库服务器不提供图形环境,因此无法运行您的代码。根据User Interfaces on the ServerOracle 文档:

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

    【讨论】:

    • 感谢 Karol 的回答,当用户单击按钮执行 java 代码作为屏幕截图时,我需要以 oracle 形式运行此代码,如果您有任何想法,请帮助我。
    猜你喜欢
    • 2019-07-22
    • 2013-04-27
    • 2011-11-07
    • 1970-01-01
    • 2010-11-25
    • 2012-10-26
    • 2010-10-16
    • 2013-08-08
    相关资源
    最近更新 更多