Для наблюдения некоторого интересного материала, можно сделать с Аннотациями, проверить мои аннотации JavaBean и процессор .
аннотации, Они являются великими для генерации кода, добавляя дополнительные проверки во время сборки, и я также использовал их для платформы сообщения об ошибке (еще опубликованный - должен очиститься с боссами...).
Ты определенно сможешь это сделать. У меня есть рабочий апплет, который делает именно это. Даже если ваш апплет подписан, вам все равно нужно использовать контроллер доступа для доступа к 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, чтобы апплет мог ее найти.
Единственное, что я могу предложить, - это взглянуть на исходный код для этой области и попытаться расшифровать, не позволяет ли он из-за отсутствия разрешения или потому, что это не разрешено вообще. К сожалению, у вас нет номеров строк, поэтому это немного усложняет задачу.
Я почти уверен, что вы не можете загрузить собственную библиотеку из апплета, если она не «подписана», и тогда пользователь получит диалоговое окно принятия, разрешающее или запрещающее. То есть, если предположить, что вы вообще можете выполнять JNI в апплете ... никогда не пробовал этого.
Удачи.