2017-06-20 3 views
2

Alors que la recherche d'un moyen pour mon projet Java pour charger les binaires bibliothèque qui sont emballés avec le projet, je vois plusieurs personnes déclarant des choses comme:Pourquoi une application Java ne peut-elle pas charger les fichiers binaires de la bibliothèque à partir de son propre .jar?

avant de pouvoir utiliser les DLL dont vous avez besoin pour extraire réellement ces de la JAR et les vider sur le disque dur quelque part sinon vous ne serez pas en mesure de charger ces

Est-ce que cette déclaration est vraie? Et pourquoi?

Répondre

1

Les DLL (bibliothèques de liens dynamiques) sont spécifiques au système d'exploitation. Le système d'exploitation doit être capable de trouver directement les fichiers afin de les charger. Un fichier jar est essentiellement un fichier zip et le système d'exploitation ne va pas chercher dans les fichiers zip/jar pour trouver des DLL.

Pour que le système d'exploitation trouve une DLL, il doit être accessible directement sur le système de fichiers, ainsi que dans le chemin d'accès DLL du système d'exploitation. Notez que les fichiers jars sont des entités Java spécifiques et que Java est distinct du système d'exploitation. En fonction d'une DLL spécifique au système d'exploitation (ou d'un fichier .o sous Linux), vous limitez votre programme à travailler sur des systèmes d'exploitation compatibles avec la bibliothèque - même le bitness (32 bits ou 64 bits) serait important pour une DLL. Cela dit, si vous avez besoin d'inclure et d'utiliser des DLL, vous aurez besoin d'une procédure d'installation ou d'instructions pour mettre les fichiers en place avant de pouvoir les exécuter.

4

Les bibliothèques de liens dynamiques (DLL) sont spécifiques au système et leur chargement appelle certaines opérations du système d'exploitation qui sont en dehors de la portée de la machine virtuelle Java et de ses chargeurs de classe.

Par conséquent, vous ne pouvez pas les charger facilement à partir d'un fichier jar.