Jar, агент, ls2j, deployment

Тема в разделе "Lotus + Java + LS2J", создана пользователем zum, 20 окт 2009.

Метки:
  1. zum

    zum Гость

    Суть есть готовое ява - приложение как запустить его агентом на клиенте
    От текущего пользователя (клиента)?

    Может это уже обсуждалось, но я не нашел...
    гугл выдал сделать агента типа "Импортированный ява код"
    Не получилось...
    "Обработка всех документов в базе данных; всего: 21
    Найдено документов, отвечающих критериям поиска: 21
    ОШИБКА: JVM: сбой при попытке загрузить вложения Java-агента.
    Выполнение класса Java-агента"

    Что не так или моет я вообще не то использую?
     
  2. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    на форуме масса коментов по теме...
    jar класть в jvm/lib/ext
     
  3. zum

    zum Гость

    хм... добавил jar jvm/lib/ext
    В дизайнере появились мои классы...
    Компилиться но ругается что не может нати... хм.. а в какой jvm он ищет?

    При первом выполнении получил:
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Error loading Agent Class: JavaAgent</div></div><div class="sp-body"><div class="sp-content">java.lang.ClassNotFoundException: JavaAgent
    at lotus.domino.AgentLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:609)
    at lotus.domino.AgentLoader.runAgent(Unknown Source)положил копию в C:\Program Files\Java\jre6\lib\ext
    получил уже:
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Exception in thread "AgentThread: JavaAgent" java.lang.ExceptionInInitializerError</div></div><div class="sp-body"><div class="sp-content"> at java.lang.J9VMInternals.initialize(J9VMInternals.java:222)
    at com.trolltech.qt.QtJambiObject.<clinit>(QtJambiObject.java:58)
    at java.lang.J9VMInternals.initializeImpl(Native Method)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:167)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:167)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:167)
    at JavaAgent.NotesMain(JavaAgent.java:12)
    at lotus.domino.AgentBase.runNotes(Unknown Source)
    at lotus.domino.NotesThread.run(Unknown Source)
    Caused by: java.security.AccessControlException: Access denied (java.lang.RuntimePermission shutdownHooks)
    at java.security.AccessController.checkPermission(AccessController.java:108)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:545)
    at COM.ibm.JEmpower.applet.AppletSecurity.superDotCheckPermission(AppletSecurity.ja
    va:1440)
    at COM.ibm.JEmpower.applet.AppletSecurity.checkRuntimePermission(AppletSecurity.jav
    a:1302)
    at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1516)
    at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1455)
    at java.lang.Runtime.addShutdownHook(Runtime.java:203)
    at com.trolltech.qt.QtJambi_LibraryInitializer.<clinit>(QtJambi_LibraryInitializer.java:63)
    at java.lang.J9VMInternals.initializeImpl(Native Method)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
    ... 9 moreубрал из jre6 уже другая ошибка:
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Exception in thread "AgentThread: JavaAgent" java.lang.NoClassDefFoundError: lb2 (initialization failure)</div></div><div class="sp-body"><div class="sp-content"> at java.lang.J9VMInternals.initialize(J9VMInternals.java:140)
    at JavaAgent.NotesMain(JavaAgent.java:12)
    at lotus.domino.AgentBase.runNotes(Unknown Source)
    at lotus.domino.NotesThread.run(Unknown Source)
    что за ошибки? Почему видит в компиляторе и не видит призапуске? И какую jvm он использует?
     
  4. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    вы читаете и не понимаете ;)
    а моглиб в гугле набрать ошибку
    в свинговом классе надо менять EXIT_ON_CLOSE на DISPOSE_ON_CLOSE
    клиента Нотес надо перезапускать для того чтобы jvm подхватила jar
    какая jvm пользуется у вас и как вы чего вызываете - понятия не имею
    кода нет, описания процесса нет, но вопросы есть :)
    я не буду в загадки играть...
    описывайте версии клиента, jar файла, кусок кода и как вы его вызываете, jar не нужно класть в дизайн и цеплять к агенту (очень не желательно)
    ощущения - у вас путаница с classpath
     
  5. zum

    zum Гость

    Клиент версия 8.5
    jvm jar- 1.6

    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">кусок jar`a</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='java'>public static void main(String[] args) { //маин jar
    QApplication.initialize(args);
    lb2 testlb2 = new lb2();
    testlb2.show();
    QApplication.exec();
    }[/CODE]<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">сам агент</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='java'>import lotus.domino.*;
    import java.*;
    public class JavaAgent extends AgentBase {
    public void NotesMain() {
    try {
    Session session = getSession();
    AgentContext agentContext = session.getAgentContext();

    // (Your code goes here)
    lb2 l=new lb2();

    }
    catch(Exception e) {e.printStackTrace();}
    }
    }[/CODE]
    по поводу :EXIT_ON_CLOSE на DISPOSE_ON_CLOSE
    наверно это в моем случае QApplication.exec(); ?
     
  6. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    класс lb2 у вас задает способ создания и убиения окна, у него д.б. переопределено событие выхода как я указал (но я указывал для свинговых контролов)
    на ошибку указывают строки:
    Caused by: java.security.AccessControlException: Access denied (java.lang.RuntimePermission shutdownHooks)
    at java.security.AccessController.checkPermission(AccessController.java:108)
    в Нотусах "запрещено" закрывать приложение из java

    что задавать в тролтековских джава портах - я не знаю (смотрите АПИ)
    на вскидку:
    static void setQuitOnLastWindowClosed(boolean quit)
    вот её в фалс
    но вы не указали что за объект типа lb2
     
  7. zum

    zum Гость

    lb2 это:
    public class lb2 extends QWidget {....

    Спасибо буду гуглить
     
  8. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    предположу, что надо согласно http://qt.nokia.com/doc/qtjambi-4.4/html/c...pplication.html
    сделать, указанное выше, действие:
    com.trolltech.qt.gui.QApplication.setQuitOnLastWindowClosed(false);
    и не забыть
    testlb2.show();
     
  9. zum

    zum Гость

    переписал
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">jar</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='java'>public static void main(String[] args) {
    QApplication.initialize(args);
    lb2 testlb2 = new lb2();
    testlb2.show();
    //QApplication.exec();
    QApplication.setQuitOnLastWindowClosed(false);
    }

    public lb2() {
    ui.setupUi(this);
    run();
    ui.textEdit.toPlainText();
    }[/CODE]положил его в ext
    перезапустил нотес и дизайнер

    выполняю:
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">агент</div></div><div class="sp-body"><div class="sp-content">
    Код (Text):
    import java.*;
    import lotus.domino.*;

    public class JavaAgent extends AgentBase {
    public void NotesMain() {
    try {
    Session session = getSession();
    AgentContext agentContext = session.getAgentContext();

    lb2 lb= new lb2();
    lb.show();
    }
    catch(Exception e) {
    e.printStackTrace();
    }
    }
    }
    в консоли все тоже:
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Exception in thread "AgentThread: JavaAgent" java.lang.ExceptionInInitializerError</div></div><div class="sp-body"><div class="sp-content"> at java.lang.J9VMInternals.initialize(J9VMInternals.java:222)
    at com.trolltech.qt.QtJambiObject.<clinit>(QtJambiObject.java:58)
    at java.lang.J9VMInternals.initializeImpl(Native Method)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:167)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:167)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:167)
    at JavaAgent.NotesMain(JavaAgent.java:10)
    at lotus.domino.AgentBase.runNotes(Unknown Source)
    at lotus.domino.NotesThread.run(Unknown Source)
    Caused by: java.security.AccessControlException: Access denied (java.lang.RuntimePermission shutdownHooks)
    at java.security.AccessController.checkPermission(AccessController.java:108)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:545)
    at COM.ibm.JEmpower.applet.AppletSecurity.superDotCheckPermission(AppletSecurity.ja
    va:1440)
    at COM.ibm.JEmpower.applet.AppletSecurity.checkRuntimePermission(AppletSecurity.jav
    a:1302)
    at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1516)
    at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1455)
    at java.lang.Runtime.addShutdownHook(Runtime.java:203)
    at com.trolltech.qt.QtJambi_LibraryInitializer.<clinit>(QtJambi_LibraryInitializer.java:63)
    at java.lang.J9VMInternals.initializeImpl(Native Method)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
    ... 9 more
    причем если в агенте сделать псевдо изменение (пробел сохранить) и запустить второй раз выдает уже:
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Exception in thread "AgentThread: JavaAgent" java.lang.NoClassDefFoundError: lb2 (initialization failure)</div></div><div class="sp-body"><div class="sp-content"> at java.lang.J9VMInternals.initialize(J9VMInternals.java:140)
    at JavaAgent.NotesMain(JavaAgent.java:10)
    at lotus.domino.AgentBase.runNotes(Unknown Source)
    at lotus.domino.NotesThread.run(Unknown Source)и так до перезапуска дизайнера....
     
  10. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    а почему show до установки завершения?
    и воще до создания объекта

    и еще не ясно - как устанавливали инвиронмент:
    http://qt.nokia.com/doc/qtjambi-4.4/html/c...stallation.html
    надо в ручную (я так полагаю) и нативные jar д.б. рядом с универсальными переменные путей д.б. настроены
     
  11. zum

    zum Гость

    lb2 testlb2 = new lb2();
    testlb2.show();
    где "до создания объекта"?

    "а почему show до установки завершения?" надо так:
    <!--shcode--><pre><code class='java'>QApplication.initialize(args);
    lb2 testlb2 = new lb2();
    //QApplication.exec();
    QApplication.setQuitOnLastWindowClosed(false);
    testlb2.show();[/CODE]?

    С путями вроде все нормально. classpath указывает на все библиотеки.
     
  12. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    <!--shcode--><pre><code class='java'>QApplication.initialize(args);
    QApplication.setQuitOnLastWindowClosed(false);
    lb2 testlb2 = new lb2();
    testlb2.show();[/CODE]
    хук на завершение может ставиться во время создания первого виджета, либо при его отображении, потому быбле надо сказать - не делать это
     
  13. zum

    zum Гость

    исправил не помогло.. пермисион денидед бла бла бла:
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Exception in thread "AgentThread: JavaAgent" java.lang.ExceptionInInitializerError</div></div><div class="sp-body"><div class="sp-content"> at java.lang.J9VMInternals.initialize(J9VMInternals.java:222)
    at com.trolltech.qt.QtJambiObject.<clinit>(QtJambiObject.java:60)
    at java.lang.J9VMInternals.initializeImpl(Native Method)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:167)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:167)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:167)
    at JavaAgent.NotesMain(JavaAgent.java:10)
    at lotus.domino.AgentBase.runNotes(Unknown Source)
    at lotus.domino.NotesThread.run(Unknown Source)
    Caused by: java.security.AccessControlException: Access denied (java.lang.RuntimePermission shutdownHooks)
    at java.security.AccessController.checkPermission(AccessController.java:108)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:545)
    at COM.ibm.JEmpower.applet.AppletSecurity.superDotCheckPermission(AppletSecurity.ja
    va:1440)
    at COM.ibm.JEmpower.applet.AppletSecurity.checkRuntimePermission(AppletSecurity.jav
    a:1302)
    at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1516)
    at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1455)
    at java.lang.Runtime.addShutdownHook(Runtime.java:203)
    at com.trolltech.qt.QtJambi_LibraryInitializer.<clinit>(QtJambi_LibraryInitializer.java:65)
    at java.lang.J9VMInternals.initializeImpl(Native Method)
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
    ... 9 more
     
  14. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    есть неск. точек для раскопок, открваем исходники (или реверсим) и смотрим:
    com.trolltech.qt.QtJambi_LibraryInitializer.<clinit>(QtJambi_LibraryInitializer.java:65)
    com.trolltech.qt.QtJambiObject.<clinit>(QtJambiObject.java:60)

    на этих стадиях и происходит вываливание
    ищем попытки перехватить "выход из приложения", а затем способы предотвращения этих попыток
    я не знаю, детально, пермишены JVM от ИБМ, возможно, установка разрешения на выход из Нотусей ,из JVM, реальна, но я не думаю, что это согласуется с логикой работы в Нотес
     
  15. zum

    zum Гость

    Хорошо поищем спасибо.

    вопрос в сторону
    при запуске агента и его компиляции
    jvm используемая лотусом - та jvm которя в classpath на компутере прописана?
     
  16. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    домино использует свою jvm, а на что ссылается бинарная сборка от тролтека - вопрос
    потому я и грил о ручной установке (а не через инсталятор)
     
  17. zum

    zum Гость

    не понял ответа =) в домино дизайнер прописана своя родная.
    а тролтековские либы лежат пряма в jar. (не правильно, зато в какойто степени переносимо)
     
  18. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    там "," д.б. (исправил)
    тролтек привязывается к jvm при установкке скриптом - НЕ НАДО так делать
    про jar я ничего не оговаривал
     
  19. zum

    zum Гость

    не надо с собой в jar апликуху тролтековские библиотеки цеплять?
    к сожалению исходников похоже нет... все это упаковано в dll
    моно токо наблюдать исполнение в дебагере со строчкой "Sourse not found"

    кстате после
    <!--shcode--><pre><code class='java'>QApplication.initialize(args);
    QApplication.setQuitOnLastWindowClosed(false);
    lb2 testlb2 = new lb2();
    testlb2.show();[/CODE]приложение стало само закрываться так и должно быть?
     
  20. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    как устанавливали библы, скриптом или сами копировали ТОЛЬКО в Нотус каталог?

    про какое приложение идет речь - отдельное (кот. не из агента)?
    яж не вижу вашего компа и понятие не имею, что там происходит :)

    исходники можете скачать с офсайта: http://qt.nokia.com/downloads

    вот строка из исходников - кот. виновата (она как-раз 65)
    Runtime.getRuntime().addShutdownHook(new Thread(new QtJambi_LibraryShutdown()));
    и это статическая инициализация...
    возможно дописать кусок, кот. по ключу не будет этого делать, скомпилить класс, засунутть его в jar (вместо оригинального)
     
Загрузка...

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