2

私は、PLL ライブラリから C++ 関数を呼び出すために Oracle Forms 6i (はい、古いものを知っています) を使用しているレガシー プロジェクトに取り組んでいます。

ここで、C++ の代わりに Java を使用する必要があるため、Oracle Forms から Java (オブジェクト/クラス/メソッド) を呼び出す必要があります。

私はそれが難しいテーマであることを知っていますが、誰かが次のことを行う簡単な例を提供できれば本当にうれしいです:

  • Java クラスからメソッドを呼び出し、int 変数を渡す (PL/SQL 内で)
  • 関数を実行した Canvas に戻り値を出力します。

基本的な例として、おそらく Hello World が理想的です。

PL/SQL についてある程度は知っていますが、Oracle Forms の開発者ではありません。我慢してください。

これが不可能な場合は、他の代替案を教えていただけますか?

4

3 に答える 3

7

さて、インターネットを徹底的に調べた後、私は非常に優れたリソースに出くわしました(スペイン語ですが):Oracle FormsとJavaに関するEliasのブログ

私が使う:

  • オラクルフォーム6i
  • JDK1.6

これで、私はハローワールドの例を作成することができました:


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 環境変数に入力したものである必要があります。

クラスを Forms にインポートする

Oracle Forms で新しいプロジェクトを作成し、キャンバスも作成します。キャンバスではテキストとボタンを使用します。ボタンの名前: TEXT_HI_WORLD。

次のメニューをクリックします: [プログラム] > [Java クラスのインポート]

すべてがうまくいった場合、クラスがどこにあるかを示す新しいウィンドウが表示されます。HiWorld クラスが存在するまで拡張します。インポートします。

Program Unit には、次の 2 つのファイルがあります。

  • ハイワールド(仕様)
  • HIWORLD(ボディ)

これは、自動的に生成され、クラスを使用するために必要なファイルです。

次にキャンバスに戻り、ボタンを右クリックして Thrigger WHEN-BUTTON-PRESSED を選択します。これのプログラミングは次のようになります。

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

于 2011-05-05T20:05:03.470 に答える
-1
// 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());

  }
}
于 2013-08-20T16:27:06.607 に答える