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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> загрузка динамической библиотеки 
V
    Опции темы
MikeLP
Дата 15.5.2009, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.4.2008

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



Здравствуйте! Помогите пожалуйста!!!
У меня такая задача: 
У меня есть библиотека (.dll), сделаная через JNI, которая взаимодействует с USB-портом. Так вот, мне надо загрузить её через web-страницу, т.е. через java-апплет.

код, который работает через консоль:

Код

import java.io.*;
import java.lang.*;
public class a3
{
    static 
    {
        System.loadLibrary("cproga");
    }
   public native int enumdev();
   public native int checkPass(String pass);

   public static void main(String[] args) throws IOException
   {    
      a3 dev = new a3();
      dev.enumdev();

      System.out.print("Enter You Password : ");
      BufferedReader bReader = new BufferedReader (new InputStreamReader(System.in));
      String pin = bReader.readLine();

      dev.checkPass(pin);
   }

}


пытался реализовать в ява аплете следуя инструкциям http://www.xs4all.nl/~vkessels/articles/jnijarapplet.html

файл a3.java:
Код

import java.net.URL;
import java.io.InputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.*;
import java.lang.*;

public class a3 {
    /** The JNI method to the DLL */
    public native int enumdev();
    public native int checkPass(String pass);

    /** Load the library from the JAR file */
    static {
        try {
            /* Get DLL from JAR file */
            URL res = a3.class.getResource("cproga.dll");
            InputStream is = res.openStream();

            /* Define the destination file */
            File dll = File.createTempFile("cproga",".dll");

            /* Open the destination file */
            FileOutputStream fos = new FileOutputStream(dll);

            /* Copy the DLL fro the JAR to the filesystem */
            byte[] array = new byte[1024];
            for(int i=is.read(array);
                i!=-1;
                i=is.read(array)
            ) {
                fos.write(array,0,i);
            }

            /* Close all streams */
            fos.close();
            is.close();

            /* Load the DLL from the filesystem */
            System.load(dll.getAbsolutePath());
        }
        catch(Throwable e)
        {
            e.printStackTrace();
        }
    }

    /** Command-line main for testing */
    public static void main(String[] args) {
      a3 dev = new a3();
      dev.enumdev();
    }
}

файл a3Applet.java:
Код
import javax.swing.JApplet;
import javax.swing.JLabel;

public class a3Applet extends JApplet {
    public void init() {
        a3 dev = new a3();
        dev.enumdev();

        getContentPane().add(new JLabel("Hello Applet"));
    }
}


файл a3.html:
Код
<html>
  <head>
    <title>Hello Applet</title>
  </head>
  <body>
    <!--"CONVERTED_APPLET"-->
<!-- HTML CONVERTER -->
<OBJECT 
    classid = "clsid:CAFEEFAC-0014-0002-0006-ABCDEFFEDCBA"
    codebase = "http://java.sun.com/update/1.4.2/jinstall-1_4_2_06-windows-i586.cab#Version=1,4,2,60"
    WIDTH = "100" HEIGHT = "50" >
    <PARAM NAME = CODE VALUE = "a3" >
    <PARAM NAME = ARCHIVE VALUE = "a3.jar" >
    <PARAM NAME = "type" VALUE = "application/x-java-applet;jpi-version=1.4.2_06">
    <PARAM NAME = "scriptable" VALUE = "false">

    <COMMENT>
    <EMBED 
            type = "application/x-java-applet;jpi-version=1.4.2_06" \
            CODE = "a3" \
            ARCHIVE = "a3.jar" \
            WIDTH = "100" \
            HEIGHT = "50" \
        scriptable = false \
        pluginspage = "http://java.sun.com/products/plugin/index.html#download">
        <NOEMBED>
            
            </NOEMBED>
    </EMBED>
    </COMMENT>
</OBJECT>

<!--
<APPLET CODE = "a3" ARCHIVE = "a3.jar" WIDTH = "100" HEIGHT = "50">


</APPLET>
-->


<!--"END_CONVERTED_APPLET"-->

  </body>
</html>


файлы .jar и .keystore созданы, всё подписано, единственное что не знаю, что насчет java.policy...

Выдаёт ошибку такого рода: Could not instantiate 

java.lang.ClassCastException: a3 cannot be cast to java.applet.Applet
    at sun.applet.AppletPanel.createApplet(Unknown Source)
    at sun.plugin.AppletViewer.createApplet(Unknown Source)
    at sun.applet.AppletPanel.runLoader(Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

ПОМОГИТЕ, ПОЖАЛУЙСТА !!!

PM MAIL   Вверх
LSD
Дата 18.5.2009, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Дык почему у тебя в HTML a3, а не a3Applet?


--------------------
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   Вверх
MikeLP
Дата 18.5.2009, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.4.2008

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



уже исправил, но не помогает
PM MAIL   Вверх
LSD
Дата 19.5.2009, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



А какая там теперь ошибка, мы должны протелепатить?


--------------------
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   Вверх
MikeLP
Дата 19.5.2009, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.4.2008

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



спасибо, разобрался
теперь другой вопрос...

Как передать из библиотеки в java-файл строку...

Число передаю так:
Код

    cls = env->GetObjectClass(obj);
    fid = env->GetFieldID(cls,"java_num","I");
    env->SetIntField(obj,fid,dll_num);


как со строкой??? подскажите! плззз
PM MAIL   Вверх
LSD
Дата 20.5.2009, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Модератор: Пожалуйста, один топик - один вопрос.


--------------------
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.

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


 




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


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

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