Как сделать Jar, который включает в себя DLL? - PullRequest
1 голос
/ 20 сентября 2011

У меня есть Jar, который выбирает DLL из некоторого пути, который указан в файле конфигурации. Я храню этот файл конфигурации в том месте, откуда я выполняю свое приложение. Эта DLL также установлена ​​где-то еще.

Теперь я хочу сделать свой Jar, который должен состоять из (классов & ) DLL. Я не хочу указывать путь, потому что этот файл конфигурации может отсутствовать.

Как поступить с этим? Как сделать банку и какие изменения мне нужно сделать?

1 Ответ

2 голосов
/ 20 сентября 2011

Если ваше приложение. с графическим интерфейсом, простой способ включить собственные библиотеки в путь к классам приложения - использовать Java Web Start для его развертывания. Вот как могут выглядеть разделы ресурсов файла запуска JNLP .

<resources >
    <j2se version="1.6+"/> 
    <!-- Supply this resource to all -->
    <jar href="ourapp.jar" size="100000" />
</resource>
<!-- Supply this resource to SunOS/sparc only -->
<resources os="SunOS" arch="sparc">
    <nativelib href="sunlibs.jar" size="250000" />
</resource>
<!-- Supply this resource to Windows only -->
<resources os="Windows">
    <nativelib href="winlibs.jar" size="300000" />
</resource>

JWS делит загрузку, поэтому Mac. и любой не SunOS * nix получает только 100 000 байт ядра Java. Общая загрузка SunOS составляет 350 000 байт, а Windows - 400 000 байт. Затем приложение может загрузить натив, используя что-то вроде:

System.loadLibrary("ournative");

После этого натив должен быть загружен и готов к использованию в любой ОС, для которой был поставлен нативный.

Развертывание через. JWS имеет ряд преимуществ, в том числе:

  • Кроссплатформенный и удобный способ развертывания нативных.
  • Разметка загрузок туземцев.
  • Автоматическое обновление ресурсов приложения (классы, нативы и т. Д.)
  • Предотвращение "ада DLL" посредством автоматических обновлений.
...