Невозможно вызвать dll из Oracle

У меня есть DLL С#, я конвертирую эту DLL из JNI4net для работы с java. Я могу вызвать dll в java, но когда я создаю файл jar и запускаю функцию java из оракула при событии кнопки. Выдает исключение.

Java-код:

    Bridge.setVerbose(true);
    Bridge.setDebug(true);
    Bridge.LoadAndRegisterAssemblyFrom(new java.io.File("ECR.j4n.dll"));
    ComECR test = new ComECR();
    test.VFI_DoSetup();

ОРАКУЛ Исключение:

java.lang.IllegalArgumentException: URI scheme is not "file"
at java.io.File.<init>(Unknown Source)
at net.sf.jni4net.CLRLoader.findDefaultDll(CLRLoader.java:54)
at net.sf.jni4net.Bridge.init(Bridge.java:31)
at com.ecr.test.Program.getProperty(Program.java:57)
at oracle.forms.handler.UICommon.onGet(Unknown Source)
at oracle.forms.engine.Runform.onGetHandler(Unknown Source)
at oracle.forms.engine.Runform.processMessage(Unknown Source)
at oracle.forms.engine.Runform.processSet(Unknown Source)

Я подписал банку, а также добавил банку в путь к классу и formweb.cfg

нужна помощь в этом


person user1593373    schedule 17.04.2016    source источник
comment
Я не думаю, что вы можете напрямую загрузить .DLL из банки. Похоже, вам нужно сначала извлечь его из банки, а затем вызвать. Пример здесь: stackoverflow.com/questions/1611357/   -  person Mike    schedule 17.04.2016
comment
Мой Java-код работает идеально. Он вызывает dll С#. Но я не могу связать банку с оракулом, это дает мне исключение, о котором я упоминал выше.   -  person user1593373    schedule 17.04.2016


Ответы (1)


У вас есть эта самая ошибка сообщения в SO: схема URI не является файлом

Из вашей ошибки я бы попробовал следующее:

Bridge.setVerbose(true);
Bridge.setDebug(true);
Bridge.LoadAndRegisterAssemblyFrom(new java.io.File("file:<fullpath>/ECR.j4n.dll"));
ComECR test = new ComECR();
test.VFI_DoSetup();

Тот факт, что вы получаете ошибку только с Oracle, может означать, что Oracle не работает с тем же путем, что и Java. Он не пропускает путь к файлу jar, но путь к dll.

person J. Chomel    schedule 18.04.2016