Вызов DLL от Апплета через JNI

Для наблюдения некоторого интересного материала, можно сделать с Аннотациями, проверить мои аннотации JavaBean и процессор .

аннотации, Они являются великими для генерации кода, добавляя дополнительные проверки во время сборки, и я также использовал их для платформы сообщения об ошибке (еще опубликованный - должен очиститься с боссами...).

8
задан mcottle 11 November 2009 в 06:20
поделиться

3 ответа

Ты определенно сможешь это сделать. У меня есть рабочий апплет, который делает именно это. Даже если ваш апплет подписан, вам все равно нужно использовать контроллер доступа для доступа к dll, вы не можете просто вызвать loadlibrary. Вы можете добавить это в файл политики Java, однако это не рекомендуется из-за 1. Вероятно, у вас нет доступа к пользовательской конфигурации java. 2. Даже если это используется вашей собственной компанией, управление файлом политики затруднительно, поскольку пользователи будут загружать некоторую JRE, а ваш файл политики либо перезаписывается, либо игнорируется.

Лучше всего подписать свой jar-файл, убедившись, что код библиотеки загрузки заключен в такой привилегированный блок кода, как этот.

try
{
    AccessController.doPrivileged(new PrivilegedAction()
    {
        public Object run()
        {
            try
            {
                // privileged code goes here, for example:
                System.load("C:/Program Files/.../Mydll.dll");
                return null; // nothing to return
            }
            catch (Exception e)
            {
                System.out.println("Unable to load Mydll");
                return null;
            }
        }
     });
}
catch (Exception e)
{
    System.out.println("Unable to load Mydll");
}

Вы также можете использовать System.loadlibrary (mydll.dll), но у вас должна быть папка dll на пути в Windows, чтобы апплет мог ее найти.

15
ответ дан 5 December 2019 в 11:25
поделиться

Единственное, что я могу предложить, - это взглянуть на исходный код для этой области и попытаться расшифровать, не позволяет ли он из-за отсутствия разрешения или потому, что это не разрешено вообще. К сожалению, у вас нет номеров строк, поэтому это немного усложняет задачу.

0
ответ дан 5 December 2019 в 11:25
поделиться

Я почти уверен, что вы не можете загрузить собственную библиотеку из апплета, если она не «подписана», и тогда пользователь получит диалоговое окно принятия, разрешающее или запрещающее. То есть, если предположить, что вы вообще можете выполнять JNI в апплете ... никогда не пробовал этого.

Удачи.

0
ответ дан 5 December 2019 в 11:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: