Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не получается загрузить jtwain.dll, помогит разобратся с реализацией 
:(
    Опции темы
Magistrus
Дата 27.10.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Жив
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 14.6.2006
Где: г. Одесса

Репутация: нет
Всего: 1



Для сканирования  изображения использую бесплатную библиотеку с http://www.mms-computing.co.uk/ с открытыми исходниками

Однако при работе в аплете не может загрузить jtwain.dll выдает такую ошибку:
JarLib.load
    Error = java.lang.UnsatisfiedLinkError: uk.co.mmscomputing.util.JarLib.loadX:
    Unknown URI-Scheme [+scheme+]; Could not load library [http://ts1:8080/javaserver/uk/co/mmscomputing/device/twain/win32/jtwain.dll]
JarLib.load
    Error = java.lang.UnsatisfiedLinkError: uk.co.mmscomputing.util.JarLib.loadX:
    Unknown URI-Scheme [+scheme+]; Could not load library [http://ts1:8080/javaserver/uk/co/mmscomputing/device/twain/win32/jtwain.dll]
java.lang.UnsatisfiedLinkError: uk.co.mmscomputing.util.JarLib.loadX:
    Unknown URI-Scheme [+scheme+]; Could not load library [http://ts1:8080/javaserver/uk/co/mmscomputing/device/twain/win32/jtwain.dll]
    at uk.co.mmscomputing.util.JarLib.loadX(JarLib.java:65)
    at uk.co.mmscomputing.util.JarLib.load(JarLib.java:10)
    at uk.co.mmscomputing.device.twain.jtwain.<clinit>(jtwain.java:228)
    at uk.co.mmscomputing.device.twain.TwainScanner.<init>(TwainScanner.java:13)
    at uk.co.mmscomputing.device.twain.TwainScanner.getDevice(TwainScanner.java:102)
    at Applets.TestMorena$TestPanel.<init>(TestMorena.java:31)
    at Applets.TestMorena.start(TestMorena.java:26)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)


вот как они пытаются ее загрузить
Код

package uk.co.mmscomputing.util;

import java.io.*;
import java.net.*;

public class JarLib{

  static public boolean load(Class cl, String libname){
    try{
      loadX(cl,libname);
      return true;
    }catch(Exception e){
      System.out.println("JarLib.load\n\tException = "+e.getMessage());
      System.err.println("JarLib.load\n\tException = "+e.getMessage());
      e.printStackTrace();
    }catch(Error e){
      System.out.println("JarLib.load\n\tError = "+e);
      System.err.println("JarLib.load\n\tError = "+e);
      e.printStackTrace();
    }
    try{                                    // Shouldn't really need to load from system defaults anymore
      System.loadLibrary(libname);
      System.out.println("JarLib.load: Successfully loaded library ["+libname+"] from some default system folder");
      return true;
    }catch(Exception e){
      System.out.println("JarLib.load\n\tException = "+e.getMessage());
      System.err.println("JarLib.load\n\tException = "+e.getMessage());
    }catch(Error e){
      System.out.println("JarLib.load\n\tError = "+e);
      System.err.println("JarLib.load\n\tError = "+e);
      e.printStackTrace();
    }
    return false;
  }

  static private void loadX(Class cl, String name)throws IOException, UnsatisfiedLinkError{
    String libname=System.mapLibraryName(name);
    URL url = cl.getResource(JarLib.getOsSubDir()+"/"+libname);
    if(url==null){ 
      throw new UnsatisfiedLinkError("uk.co.mmscomputing.util.JarLib.loadX: Could not find library ["+libname+"]");
    }
    try{
      URI uri = new URI(url.toString());    
      String scheme = uri.getScheme();
      if(scheme.equals("file")){                // if on local file system use this copy
        System.load(new File(uri).getAbsolutePath());
        System.out.println("JarLib.load: Successfully loaded library ["+url+"] from mmsc standard file location");
      }else if(scheme.equals("jar")){           // make copy in tmp folder on local file system
        File   dir    = new File(System.getProperty("java.io.tmpdir"),"mmsc");dir.mkdirs();
        File   tmp    = File.createTempFile("mmsc",libname,dir);
        try{
//          System.out.println(tmp.getAbsolutePath());
          JarLib.extract(tmp,url);
          System.load(tmp.getAbsolutePath());
          System.out.println("JarLib.load: Successfully loaded library ["+url+"] from jar file location");        
        }finally{
          File[] files=dir.listFiles();
          for(int i=0;i<files.length;i++){           // delete all unused library copies
            if(files[i].getName().endsWith(libname)){// if library is still needed we won't be able to delete it
              files[i].delete();                     
            }
          }
        }
      }else{
        throw new UnsatisfiedLinkError("uk.co.mmscomputing.util.JarLib.loadX:\n\tUnknown URI-Scheme [+scheme+]; Could not load library ["+uri+"]");
      }
    }catch(URISyntaxException urise){
      throw new UnsatisfiedLinkError("uk.co.mmscomputing.util.JarLib.loadX:\n\tURI-Syntax Exception; Could not load library ["+url+"]");
    }
  }

  static private void extract(File fn, URL url)throws IOException{
    InputStream      in  = url.openStream();
    FileOutputStream out = new FileOutputStream(fn);
    byte[] buffer=new byte[4096];
    int count=0;
    while((count=in.read(buffer))>0){
      out.write(buffer,0,count);
    }
    out.close();
    in.close();
  }

  static private String getOsSubDir(){              // This is where I put my stuff

//    System.out.println("java.library.path = "+System.getProperty("java.library.path"));

    String osname=System.getProperty("os.name");
    if(osname.startsWith("Linux")){ return "linux";}
    if(osname.startsWith("Windows")){
      String osarch=System.getProperty("os.arch");
//      System.err.println("osarch = "+osarch);
      if(osarch.endsWith("64")){                    // amd64
        return "win64";
      }else{                                        // x86
        return "win32";
      }
    }
    if(osname.startsWith("Mac")){ return "mac";}
    return "";
  }
}


использую сервер Tomcat
при локальной работе все ОК

Это сообщение отредактировал(а) Magistrus - 27.10.2006, 11:41
--------------------
~ вот такая вот загагулина ~ 
PM MAIL WWW ICQ Skype   Вверх
LSD
Дата 27.10.2006, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Ну ты и намудрил с эксепшенами.

Зачем тебе был нужен URI, когда у URL можно было спокойно получить getProtocol(). Плюс тебе надо загрузить библиотеку по HTTP, а такой вариант у тебя не предусмотрен.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Magistrus
Дата 27.10.2006, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Жив
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 14.6.2006
Где: г. Одесса

Репутация: нет
Всего: 1



Цитата(LSD @ 27.10.2006,  12:24)

Зачем тебе был нужен URI, когда у URL можно было спокойно получить getProtocol(). Плюс тебе надо загрузить библиотеку по HTTP, а такой вариант у тебя не предусмотрен.

все дело в том что это не у меня, это не мой код smile я его понимаю то с трудом smile

вопрос как загрузить jtwain.dll по http и после этого чтоб его еще увидел аплет?
--------------------
~ вот такая вот загагулина ~ 
PM MAIL WWW ICQ Skype   Вверх
LSD
Дата 27.10.2006, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Попробуй заменить:
Код
else if(scheme.equals("jar"))

на
Код
else if(scheme.equals("jar") || scheme.equals("http"))



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Magistrus
Дата 27.10.2006, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Жив
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 14.6.2006
Где: г. Одесса

Репутация: нет
Всего: 1



не помогло smile 
хотя ошибка другая 
JarLib.load
    Exception = access denied (java.util.PropertyPermission java.io.tmpdir read)
JarLib.load
    Exception = access denied (java.util.PropertyPermission java.io.tmpdir read)
java.security.AccessControlException: access denied (java.util.PropertyPermission java.io.tmpdir read)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
    at java.lang.System.getProperty(Unknown Source)
    at uk.co.mmscomputing.util.JarLib.loadX(JarLib.java:50)
    at uk.co.mmscomputing.util.JarLib.load(JarLib.java:10)
    at uk.co.mmscomputing.device.twain.jtwain.<clinit>(jtwain.java:228)
    at uk.co.mmscomputing.device.twain.TwainScanner.<init>(TwainScanner.java:13)
    at uk.co.mmscomputing.device.twain.TwainScanner.getDevice(TwainScanner.java:102)
    at Applets.TestMorena$TestPanel.<init>(TestMorena.java:31)
    at Applets.TestMorena.start(TestMorena.java:26)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)


Это сообщение отредактировал(а) Magistrus - 27.10.2006, 13:33
--------------------
~ вот такая вот загагулина ~ 
PM MAIL WWW ICQ Skype   Вверх
Metal_Heart
Дата 27.10.2006, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


Профиль
Группа: Участник
Сообщений: 728
Регистрация: 31.3.2005
Где: Москва

Репутация: нет
Всего: 12



Magistrus, а аплет подписан или нет?


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
Magistrus
Дата 27.10.2006, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Жив
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 14.6.2006
Где: г. Одесса

Репутация: нет
Всего: 1



я так понял аплет пытается создать временную дерикторию а ему это не дает JVM так?

Добавлено @ 13:41 
Цитата(Metal_Heart @ 27.10.2006,  13:37)
Magistrus, а аплет подписан или нет?

нет, никогда этого не делал, вренее подписывал но jar , а у меня тут все в class

Добавлено @ 13:52 
уже во всю ищу в FAQ как подписать апплет 
--------------------
~ вот такая вот загагулина ~ 
PM MAIL WWW ICQ Skype   Вверх
Magistrus
Дата 27.10.2006, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Жив
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 14.6.2006
Где: г. Одесса

Репутация: нет
Всего: 1



оффтопик: а можно подписать не jar?
--------------------
~ вот такая вот загагулина ~ 
PM MAIL WWW ICQ Skype   Вверх
LSD
Дата 27.10.2006, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Magistrus @  27.10.2006,  15:03 Найти цитируемый пост)
оффтопик: а можно подписать не jar?

Нет.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Апплеты | Следующая тема »


 




[ Время генерации скрипта: 0.0571 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.