powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / applet + jacob
3 сообщений из 3, страница 1 из 1
applet + jacob
    #38144097
dasistgut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возникает ошибка при обращении к методам jawin/jacob. Делаю так:
апплет ComLauncherApplet.java:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
import com.jacob.activeX.*;
import org.jawin.*;
import org.jawin.win32.*;

public class ComLauncher extends JApplet {
  public void init(){
    System.out.println("ComLauncher Init"); //проверка загрузки
  }
  public void jawin_Run(){
      try {
        System.out.println("jawin_Run 1");
        Ole32.CoInitialize();
        System.out.println("jawin_Run 2");
      }catch (Exception e){
        System.out.println("jawin_Run catch");
        e.printStackTrace();
      }finally{
        System.out.println("jawin_Run finally");
      }
      System.out.println("jawin_Run end");
  }
  public void jacob_Run(){
      try {
        System.out.println("jacob_Run 1");
        ActiveXComponent xl = new ActiveXComponent("Scripting.FileSystemObject");
        System.out.println("jacob_Run 2");
      }catch (Exception e){
        System.out.println("jacob_Run catch");
        e.printStackTrace();
      }finally{
        System.out.println("jacob_Run finally");
      }
      System.out.println("jacob_Run end");
  }
}


файл ComLauncher.jnlp
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<?xml version="1.0" encoding="UTF-8"?>
<jnlp href="">
    <information>
        <title></title>
        <vendor></vendor>
    </information>
    <resources>
        <j2se version="1.6+" />
        <jar href= "lib/ComLauncherApplet.jar" main="true" />
        <jar href="lib/jacob.jar"/>
        <jar href= "lib/jawin.jar"/>
        <jar href= "lib/jawin-stubs.jar"/>
        <nativelib href= "lib/dll.jar"/>
        <jar href="lib/xmlParserAPIs.jar"/>
    </resources>
    <applet-desc
         name="ComLauncher"
         main-class="ComLauncher"
         width="700"
         height="200">
     </applet-desc>
     <update check="background"/>
</jnlp>


файл index.htm
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<body>
  <script type="text/javascript" src="http://www.java.com/js/deployJava.js"></script>
  <script>
    var attributes = {id:'FileUploader', code:'FileUploader', width:710, height:240} ;
    var parameters = {jnlp_href: 'ComLauncher.jnlp'} ;
    deployJava.runApplet(attributes, parameters, '1.6');
  </script>
  <button onclick="document.all.FileUploader.jacob_Run();">jacob_Run</button>
  <button onclick="document.all.FileUploader.jawin_Run();">jawin_Run</button>
</body>


Все jar`ы подписаны. В dll.jar лежат jacob-1.17-M2-x86.dll и jawin.dll
после загрузки в логе последняя строка:
ComLauncher Init
т.е. апплет успешно загрузился.
но при вызове обеих функций логи такие:
jawin_Run:
Код: xml
1.
2.
jawin_Run 1
jawin_Run finally


jacob_Run:
Код: xml
1.
2.
jacob_Run 1
jacob_Run finally


т.е. ошибка где-то при вызове функции dll. Причём в catch не попадает - сразу в finally. И последний вывод (jawin_Run end/jacom_Run end) тоже не проходит. В чём здесь может быть дело? Похоже длл`ки не загружаются. Но вроде бы всё прописано.
...
Рейтинг: 0 / 0
applet + jacob
    #38144108
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поменяйте в коде
catch(Throwable e)

У вас там Error вылетает, который от Exception не наследуется. Ну, а потом текст ошибки показывайте.
...
Рейтинг: 0 / 0
applet + jacob
    #38146173
dasistgut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, спасибо.
с Throwable методы работают по-разному:
jawin_Run - при первом вызове лог такой:
Код: html
1.
2.
3.
4.
5.
jawin_Run 1
jawin_Run catch
null
jawin_Run finally
jawin_Run end


при втором и последующих такой:
Код: html
1.
2.
3.
4.
5.
jawin_Run 1
jawin_Run catch
Could not initialize class org.jawin.win32.Ole32
jawin_Run finally
jawin_Run end

т.е. при первом вызове ошибка почему-то даёт null

jacob_Run - в этом варианте в ошибке была строка:
Код: html
1.
access denied ("java.util.PropertyPermission" "com.jacob.debug" "read")


переделал на
Код: java
1.
2.
ActiveXComponent xl = (ActiveXComponent)AccessController.doPrivileged(new PrivilegedAction() {
                public Object run() { return new ActiveXComponent("Scripting.FileSystemObject");}});

- метод заработал. Можно, в общем-то, считать, что решение найдено. Хотя теоретические вопросы остались - примеров на jawin и на jacob много и здесь на sql.ru, но ни у кого не вызывает ошибку Ole32.CoInitialize(); и new ActiveXComponent тоже без шаманства работает.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / applet + jacob
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]