gpt4 book ai didi

java - 如何从 Oracle Forms 6i 调用 Java 对象/函数?

转载 作者:行者123 更新时间:2023-11-29 07:19:56 25 4
gpt4 key购买 nike

我正在处理一个遗留项目,该项目使用 Oracle Forms 6i(是的,我知道它很旧)从 PLL 库调用 C++ 函数。

现在我们需要使用 Java 而不是 C++,因此我们需要从 Oracle Forms 调用 Java(对象/类/方法)。

我知道这是一个具有挑战性的主题,但如果有人能提供一个执行以下操作的简单示例,我将非常高兴:

  • 从 Java 类调用一个方法,传递一个 int 变量(在 PL/SQL 中)
  • 在执行 Function 的 Canvas 中打印返回值。

一个基本的例子,也许 Hello World 是最理想的。

我知道一些 PL/SQL,但我不是 Oracle Forms 开发人员;请耐心等待。

如果这不可能,你能给我一些其他的选择吗?

最佳答案

好吧,在通过互联网进行大量查找之后,我发现了一个非常好的资源(尽管是西类牙语):Elias blog about Oracle Forms and Java

I use:

  • Oracle Forms 6i
  • JDK 1.6

有了这个,我成功地创建了 hello world 示例:


配置PATH环境变量:

  • C:\PATH_TO_JAVA\Java\jdk1.6.0\bin;
  • C:\PATH_TO_JAVA\Java\jdk1.6.0\jre\bin;
  • C:\PATH_TO_JAVA\Java\jdk1.6.0\jre\bin\client;

例如: PATH_TO_JAVA = C:\Program Files


添加到类路径

  • FORMS_HOME\TOOLS\common60\JAVA\IMPORTER.JAR(在我的例子中 FORMS_HOME 是 C:\orant)
  • PATH_TO_YOUR_JAR\NAME_OF_JAR.jar

创建Java程序

  1. 用你的IDE创建一个简单的java程序,下面是我的:

    public class HiWorld{        
    private String hi="Hello World!";

    public String getHi(){
    return this.hi;
    }

    public String getMultiply(int a, int b){
    return ""+a*b;
    }

    public static void main(String args[]){
    HiWorld hm = new HiWorld();
    System.out.println(hm.getHi());
    System.out.println(hm.getMultiply(5,10));
    }
    }
  2. 将其导出到 Jar 文件(路径必须是您在 CLASSPATH 环境变量中放置的路径。

将类导入表单

在 Oracle Forms 中创建一个新项目并创建一个 Canvas,在 canvas 中使用一个 Text 和一个 Button。按钮的名称:TEXT_HI_WORLD。

点击菜单:Program > Import Java Classes

如果一切顺利,那么将会有一个新窗口显示类所在的包,您可以扩展它直到有 HiWorld 类。导入它。

现在Program Unit中会有两个文件:

  • HIWORLD(规范)
  • HIWORLD(正文)

这是自动生成的文件,需要使用该类。

然后回到 Canvas ,右键单击按钮并选择“当按下按钮时触发”,其编程将是:

DECLARE
v_wb ORA_JAVA.JOBJECT;
v_hi VARCHAR2(20);
BEGIN
v_wb := hiworld.new();
v_hi:= hiworld.getHi(v_wb);
:TEXT_HI_WORLD := v_hi
END;

现在执行程序并点击按钮! :)

希望这可以帮助那些对 Forms 了解不多的 Java 程序员与遗留系统集成! :D

关于java - 如何从 Oracle Forms 6i 调用 Java 对象/函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5890868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com