Не находит метод при вызове из LS2J

Тема в разделе "Lotus + Java + LS2J", создана пользователем VladSh, 18 янв 2012.

  1. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Создал библу в библиотеках.
    Описал метод как
    Код (Text):
    public static boolean start(String sU, String sP)
    метода main нет, "start" в список зарезервированных слов в Java не входит
    при вызове из LS2J пишет:
    <!--QuoteBegin-"IBM Lotus Notes"+-->
    <table border="0" cellpadding="0" cellspacing="0" align="center" width="98%"> [tr] <td class="vbquote"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="75" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="50px"> [tr] <td class="vbquote" width="28" valign="top">[​IMG]</td> <td class="vbquote" width="100%" style="background-image: url('style_images/ckr/quotes/quote-bg.gif'); background-position: center;" valign="middle"><span class="vbquote">Цитата:</span></td> <td class="vbquote" valign="top">[​IMG]</td> [/tr] </table> </td> <td class="vbquote" align="left" style="background-image: url('style_images/ckr/quotes/quot-lr-bg.gif')" valign="bottom"></td><td class="vbquote" width="0" align="left" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="200"> [tr] <td class="vbquote" valign="top">[​IMG]</td> <td class="vbquote" width="100%" style="background-image: url('style_images/ckr/quotes/quot-bye-bg.gif')" align="left" valign="middle" nowrap="nowrap"><span class="vbquote">("IBM Lotus Notes")</span></td> <td class="vbquote" valign="top">[​IMG]</td> [/tr] </table> </td><td class="vbquote" width="100%" align="right" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="100%"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" style="background-image: url('style_images/ckr/quotes/quot-top-bg.gif')" width="100%" valign="middle"></td> <td class="vbquote" align="left" valign="top">[​IMG]</td> [/tr] </table> </td> [/tr] </table> </td> [/tr] </table> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="10" style="background-image: url('style_images/ckr/quotes/quoting-left.gif')"></td> <td class="vbquotemain" width="100%" valign="top"></td> <td class="vbquote" width="10" style="background-image: url('style_images/ckr/quotes/quoting-right.gif')"></td> [/tr] [tr] <td class="vbquote" width="10" style="background-image: url('style_images/ckr/quotes/quot-left-bg.gif')"></td> <td class="vbquotemain" width="100%" valign="top"><!--QuoteEBegin-->Instance member START does not exist<!--QuoteEnd--></td> [/tr] [tr] [/tr] </table> </td> [/tr] </table>
    <!--QuoteEEnd-->
    Код (Text):
    public boolean start(String sU, String sP)
    т.е. без static тоже не помогает.
    methods при переборе видит этот метод + перечисляет методы, которых у меня в классе нет
    Самое интересное, что похожий вроде класс с хэшем нормально работает.
    Подскажите, добры люди, что его такое, и как подлечить? :)
     
  2. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    В LS должно быть что-то вроде
    Код (LotusScript):
        Dim jSession As JavaSession
    Dim jClass As JavaClass
    Dim jMethod As JavaMethod
    Dim res As Boolean

    Set jSession = New JavaSession()
    Set jClass = jSession.GetClass("yourPackage/YourClass")
    Set jMethod = jClass.GetMethod("start", "(Ljava/lang/String;Ljava/lang/String;)V")
    '   Set jMethod = jClass.GetMethod("start", "(Ljava/lang/String;Ljava/lang/String;)Z") 'или так?
    res = jMethod.Invoke(, arg1, arg2)
     
  3. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Это так вызывать надо, когда > 1-го параметра? Или почему именно так в этом случае?
     
  4. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Теперь Invoke требует JavaObject..
    <!--QuoteBegin-"Help"+-->
    <table border="0" cellpadding="0" cellspacing="0" align="center" width="98%"> [tr] <td class="vbquote"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="75" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="50px"> [tr] <td class="vbquote" width="28" valign="top">[​IMG]</td> <td class="vbquote" width="100%" style="background-image: url('style_images/ckr/quotes/quote-bg.gif'); background-position: center;" valign="middle"><span class="vbquote">Цитата:</span></td> <td class="vbquote" valign="top">[​IMG]</td> [/tr] </table> </td> <td class="vbquote" align="left" style="background-image: url('style_images/ckr/quotes/quot-lr-bg.gif')" valign="bottom"></td><td class="vbquote" width="0" align="left" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="200"> [tr] <td class="vbquote" valign="top">[​IMG]</td> <td class="vbquote" width="100%" style="background-image: url('style_images/ckr/quotes/quot-bye-bg.gif')" align="left" valign="middle" nowrap="nowrap"><span class="vbquote">("Help")</span></td> <td class="vbquote" valign="top">[​IMG]</td> [/tr] </table> </td><td class="vbquote" width="100%" align="right" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="100%"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" style="background-image: url('style_images/ckr/quotes/quot-top-bg.gif')" width="100%" valign="middle"></td> <td class="vbquote" align="left" valign="top">[​IMG]</td> [/tr] </table> </td> [/tr] </table> </td> [/tr] </table> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="10" style="background-image: url('style_images/ckr/quotes/quoting-left.gif')"></td> <td class="vbquotemain" width="100%" valign="top"></td> <td class="vbquote" width="10" style="background-image: url('style_images/ckr/quotes/quoting-right.gif')"></td> [/tr] [tr] <td class="vbquote" width="10" style="background-image: url('style_images/ckr/quotes/quot-left-bg.gif')"></td> <td class="vbquotemain" width="100%" valign="top"><!--QuoteEBegin-->JavaObject. The instance of an object, if the method is not static. Optional if the method is static.<!--QuoteEnd--></td> [/tr] [tr] [/tr] </table> </td> [/tr] </table>
    <!--QuoteEEnd-->Он у меня stasic, но всё равно требует. Ерунда какая-то...

    Перезагрузил Лотас, он теперь выплёвывает:
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">LS2J Error: Threw java.security.AccessControlException: Access denied (java.lang.RuntimePermission exitVM.3)</div></div><div class="sp-body"><div class="sp-content">java.security.AccessControlException: Access denied (java.lang.RuntimePermission exitVM.3)
    at java.security.AccessController.checkPermission(AccessController.java:108)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:544)
    at COM.ibm.JEmpower.applet.AppletSecurity.superDotCheckPermission(AppletSecurity.ja
    va:1449)
    at COM.ibm.JEmpower.applet.AppletSecurity.checkRuntimePermission(AppletSecurity.jav
    a:1311)
    at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1611)
    at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1464)
    at java.lang.SecurityManager.checkExit(SecurityManager.java:756)
    at java.lang.Runtime.exit(Runtime.java:99)
    at java.lang.System.exit(System.java:279)
    at FileDownloader.start(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.jav
    a:37)
    at java.lang.reflect.Method.invoke(Method.java:611)
    at lotus.domino.JavaConnectInvoker.invoke(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.jav
    a:37)
    at java.lang.reflect.Method.invoke(Method.java:611)
    at lotus.domino.JavaConnectLoader.invoke(Unknown Source)
     
  5. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    Даунлодер пытается прихлопнуть JVM, вызывая System.exit(). JVM валиться на собирается( и ее в общем-то можно понять )
    Вы уверены, что действительно хотите уложить лотусовую жабамашину? Если так - то можно прописать соответсующий restriction в %lotushome%/jvm/lib/security/java.policy. Но я бы не советовал :)
     
  6. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    turumbay
    Угадали!) Вот бы мне так влёт разбирать!..
    Но уже радует, что выполняется код библы :)
    Непонятно только.. - это что же, при любом изменении в Java-библе Лотус передёргивать?)
     
  7. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    если либа лежит в ФС - да...
    но никто не мешает побить её на части - часть в ФС (более-менее постоянная), а изменяемая в БД
     
  8. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    да нет.. в БД лежит. И в основном я её и не менял даже, а менял LS-код. Но чего-то такое ощущение, что выполнение кода не зависело от того, меняю я что-то или нет в коде, т.к. результат был один и тот же, а потом ничего не менял и вдруг бабах и ошибка стала вылетать.. Такое впечатление, что он выполняет закэшированный код. а потом, когда ему вздумается обновляет кэш..

    Переезжаем сюда)
     
  9. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Действительно, при любом изменении в Java-библиотеке, находящейся в БД, надо также перезагружать Лотус, т.к. изменения сразу не подхватываются.. А иногда не то, что Лотуса, даже перезагрузка компа не помогает - Нотес подхватывает изменения как-то сам по себе.
    Может есть какие-то настройки кэша? Может можно установить, чтобы кеш сбрасывался всегда?

    И ещё глюк: окно Java-консоли при открытии иногда не открываться вообще. Потом, после нескольких запусков кнопки оно может открыться, а может и нет. Никто не знает как с этим бороться?
     
Загрузка...

Поделиться этой страницей