如何从Oracle Forms 6i调用Java对象/函数? 我正在研究一个遗留项目,它使用Oracle Form 6i(是的,我知道它的旧)来调用PLL库中的C++函数。 现在需要使用java来代替C++,因此我们需要从Oracle表单调用java(对象/类/方法)。p>

如何从Oracle Forms 6i调用Java对象/函数? 我正在研究一个遗留项目,它使用Oracle Form 6i(是的,我知道它的旧)来调用PLL库中的C++函数。 现在需要使用java来代替C++,因此我们需要从Oracle表单调用java(对象/类/方法)。p>,java,class,methods,invoke,oracleforms,Java,Class,Methods,Invoke,Oracleforms,我知道这是一个具有挑战性的主题,但如果有人能提供一个简单的例子,做到以下几点,我会非常高兴: 从Java类调用方法,传递int变量(在PL/SQL中) 在执行函数的画布中打印返回值 一个基本的例子,也许一个Hello World是理想的 我知道一些PL/SQL,但我不是Oracle窗体开发人员;请容忍我 如果这是不可能的,你能给我指一些其他的选择吗?好吧,在通过互联网进行深入查找后,我发现了一个非常好的资源(尽管是西班牙语): 我使用: 甲骨文表格6i JDK1.6 通过这一点,我成功创

我知道这是一个具有挑战性的主题,但如果有人能提供一个简单的例子,做到以下几点,我会非常高兴:

  • 从Java类调用方法,传递int变量(在PL/SQL中)
  • 在执行函数的画布中打印返回值
一个基本的例子,也许一个Hello World是理想的

我知道一些PL/SQL,但我不是Oracle窗体开发人员;请容忍我


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

好吧,在通过互联网进行深入查找后,我发现了一个非常好的资源(尽管是西班牙语):

我使用:

  • 甲骨文表格6i
  • JDK1.6
通过这一点,我成功创建了hello world示例:


配置路径环境变量:
  • C:\PATH\u TO\u JAVA\JAVA\jdk1.6.0\bin
  • C:\PATH\u TO\u JAVA\JAVA\jdk1.6.0\jre\bin
  • C:\PATH\u TO\u JAVA\JAVA\jdk1.6.0\jre\bin\client
Ex:PATH\u TO\u JAVA=C:\Program Files


添加到类路径
  • FORMS\u HOME\TOOLS\common60\JAVA\IMPORTER.JAR(在我的例子中,FORMS\u HOME是C:\orant)
  • 路径\u到\u您的\u JAR\u JAR.JAR的名称\u

创建Java程序
  • 使用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));                
      }
    }
    
  • 将其导出到Jar文件(路径必须是放入CLASSPATH环境变量中的路径)

  • 将类导入表单 在Oracle窗体中创建新项目并创建画布,在画布中使用文本和按钮。按钮名称:Text\u HI\u WORLD

    下面单击菜单:程序>导入Java类

    如果一切正常,那么将出现一个新窗口,向您显示类所在的包,您可以扩展它,直到出现HiWorld类。导入它

    在程序单元中,现在将有两个文件:

    • HIWORLD(规格)
    • HIWORLD(机构)
    这是自动生成的文件,需要使用该类

    然后返回到画布,右键单击按钮并选择Thrigger(当按下按钮时),该程序将:

    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;
    
    现在执行程序并单击按钮!:)


    希望这能帮助对表单了解不多的Java程序员与遗留系统集成!:D

    我以前已经这样做过,使用一个简单的类应该可以,但是当您尝试开发更复杂的东西时,我建议扩展VBean类,您可以在oracle的forms安装文件夹(frmall.jar)中找到该库

    甲骨文表格7-表单版本从6到9i。感谢Sathya的更正,编辑了问题:)我遵循了这个步骤。但我得到了类似FRM-40735的异常:当按下按钮触发时引发了未处理的异常ORA-105101
    // el programa corregido.
    
    public class HolaMundo {
    
    private String hi= "Hey World!!!";
    
      public String GetHi(){
        return this.hi;
      }
    
    public static void main(String args[]){
    
        HolaMundo  hm = new HolaMundo();
        System.out.println(hm.GetHi());
    
      }
    }