#java #class #methods #invoke #oracleforms
#java #класс #методы #вызвать #oracleforms
Вопрос:
Я работаю над устаревшим проектом, который использует Oracle Forms 6i (да, я знаю его старый) для вызова функций C из библиотеки PLL.
Теперь нам нужно использовать Java вместо C , поэтому нам нужно вызвать Java (Object / Class / Method) из Oracle Forms.
Я знаю, что это сложная тема, но я был бы действительно рад, если бы кто-нибудь мог предоставить простой пример, который выполняет следующее:
- Вызов метода из класса Java, передача переменной int (в PL / SQL)
- Печать возвращаемого значения в Canvas, который выполнил функцию.
Базовый пример, возможно, Hello World был бы идеальным.
Я немного знаю PL / SQL, но я не разработчик Oracle Forms; пожалуйста, потерпите меня.
Если это невозможно, не могли бы вы указать мне на некоторые другие альтернативы?
Комментарии:
1. Oracle Forms 7? — Версия Forms была изменена с 6 на 9i.
2. Спасибо Сатье за исправление, отредактировал вопрос 🙂
Ответ №1:
Что ж, после интенсивного поиска в Интернете я наткнулся на очень хороший ресурс (правда, на испанском): Блог Элиаса об Oracle Forms и Java
Я использую:
- Oracle Forms 6i
- JDK 1.6
С помощью этого мне удалось создать пример hello world:
Настройте переменные среды PATH:
- C:PATH_TO_JAVAJavajdk1.6.0bin;
- C:PATH_TO_JAVAJavajdk1.6.0jrebin;
- C:PATH_TO_JAVAJavajdk1.6.0jrebinclient;
Пример: PATH_TO_JAVA = C:Program Файлы
Добавить в CLASSPATH
- FORMS_HOMETOOLScommon60JAVAIMPORTER.JAR (В моем случае FORMS_HOME был C:orant )
- PATH_TO_YOUR_JARNAME_OF_JAR.jar
Создать программу 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 Forms, а также создайте холст, в холсте используйте текст и кнопку. Название кнопки: TEXT_HI_WORLD.
Следующий щелчок в меню: Программа> Импортировать классы Java
Если все прошло нормально, появится новое окно, которое покажет вам пакет, в котором находится класс, вы расширяете его до тех пор, пока не появится класс HiWorld. Импортируйте его.
В программном модуле теперь будет два файла:
- HIWORLD (Спецификация)
- HIWORLD (тело)
Это файлы, сгенерированные автоматически и необходимые для использования класса.
Затем вернитесь к canvas, щелкните правой кнопкой мыши на кнопке и выберите 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-программистам, не имеющим особых знаний о формах, интегрироваться с устаревшими системами! 😀
Комментарии:
1. Я выполнил этот шаг. Но я получил исключение, подобное этому FRM-40735: ПРИ НАЖАТИИ кнопки триггера возникло необработанное исключение ORA-105101
Ответ №2:
Я делал это раньше, и с простым классом это должно сработать, но когда вы пытаетесь разработать что-то более сложное, я рекомендую расширить из класса VBean, вы можете найти библиотеку в папках установки oracle forms (frmall.jar ).
Ответ №3:
// 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());
}
}