Я пытаюсь собрать системную информацию с использованием API SIGAR. После включения sigar.jar в мою библиотеку Netbeans дал ошибку, что sigar-amd64-winnt.dll
не найден. После добавления этого файла в библиотеку он работал отлично.SIGAR API не работает после упаковки в jar/exe
Теперь мне нужно было создать исполняемый банку, поэтому я использовал NetBeans для создания моего проекта. Netbeans автоматически удалил DLL-файл и после того, как я вручную скопировал его обратно в папку dist, моя программа работала. Теперь я пытаюсь создать exe-файл с помощью Launch4j. Когда я запускаю его, возникает исключение java, возможно, потому что Launch4j удалил DLL-файл.
Как я могу убедиться, что Launch4j включает его в файл exe?
Я просмотрел множество ответов на SO, но не смог решить мою проблему. Уже упоминали некоторые ценам ниже
sigar-amd64-winnt.dll ... can't reference it or bundle it with .jar
How to include SIGAR API in Java Project
Любая помощь будет оценена ..
РЕДАКТИРОВАНИЕ
Launch4j дает следующее исключение в своем журнале, когда я пробный запуск exe-
Exception in thread "main" java.lang.NoClassDefFoundError: org/hyperic/sigar/SigarException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.hyperic.sigar.SigarException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 6 more
Но есть проблема, которая каждый раз, когда он будет создан новый файл в папке temp, если вы запускаете программу много раз, диск C станет полным с каждым днем. 1Mb для 3-го запуска –
'sigar.deleteOnExit();' будет убедиться, что файл удален при завершении работы JVM. – Pranav