cs_zinZ
Messages postés21Date d'inscriptionvendredi 15 juin 2007StatutMembreDernière intervention14 septembre 2007
-
26 juil. 2007 à 14:22
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023
-
27 juil. 2007 à 14:29
Bonjour,
Pour mon stage je dois développer un petit logiciel en java utilisant la librairie cdf (Common Data Format) que j'ai télécharger sur internet puis installé sous windows.
J'ai créer un executable (.jar) de mon logiciel, je le lance sous windows et tout va bien.
J'essai ensuite de le lancer sous Unix mais ca ne marche pas et ca m'affiche le message :
<!-- BEGIN TEMPLATE: bbcode_code -->
Code :
java.lang.UnsatisfiedLinkError: no cdfNativeLibrary in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1516)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:834)
at gsfc.nssdc.cdf.CDFNativeLibrary.<clinit>(CDFNativeLibrary.java:47)
at gsfc.nssdc.cdf.CDF.open(CDF.java:275)
<!-- END TEMPLATE: bbcode_code -->
Apperement il manque cdfNativeLibrary, mais je ne sais pas trop ce qu'est une NativeLibrary.
Sous windows J'ai trouvé les fichiers cdfNativeLibrary.dll et cdfNativeLibrary.lib
Peuvent-il me servir sous unix et ou dois-je les inclure ?
Sinon comment m'en sortir.
Est ce que je dois trouver une version Unix de cdfNativeLibrary, et si c'esst le cas, comment est ce que je l'incöue a mon logiciel ?
Je n'y connait rien sous unix et il faut absolument que mon logiciel marche sous unix, sa fais deux jour que j'y suis.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 26 juil. 2007 à 14:36
Une librairie native est une librairie... native, c'est-à-dire qu'elle est fait pour un OS en particulier. (sous windows, c'est les dll, sous linux, c'est les so)
Un programme java est fait pour être indépendant du système sur lequel il s'exécute, ce qui limite pas mal les possibilités. Du coup, il existe plusieurs librairies natives que l'on peux utilisé sous Java, mais cela crée des dépendances, et il faut pas oublier de les installer avec le programme Java (c'est le prix à payer !).
Donc il te manque plus qu'à partir à la recherche de la librairie perdue afin de trouver son équivalent pour linux.
cs_zinZ
Messages postés21Date d'inscriptionvendredi 15 juin 2007StatutMembreDernière intervention14 septembre 2007 26 juil. 2007 à 15:28
Merci je commence à y voir plus claire,
Je n'utilise pas linux mais unix, je sais que ca se ressemble mais on m'a dit qu'il y'avait une différence donc je préfere préciser.
Sur la machine Unix que j'utilise j'ai trouvé un libcdf.sl et un libcdf.a qui étaient déjà présents, peut-être que ca peut m'aider.
Mais je ne sai pas comment les inculre.
La chose qui m'intrigue c'est que je ne me suis jamais soucié de cdfNativeLibrary.dll et cdfNativeLibrary.lib sous windows. Je n'ai jamais eu a les inclure ou que ce soi, j'ai juste inclu cdfjava.jar dans le classpath de mon manifest, et lui ne contient rien non plus sur ces deux fichiers dans son propre manifest.
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 27 juil. 2007 à 12:37
Salut,
sous unix (et linux) une lib native commence par lib et se termine en .so
Il te faut donc la lib native : libcdfNativeLibrary.so, vérifie également que tu as bien
récupéré la bonne version de ta lib...
Maintenant en regardant le package cdf31-dist-java.tar.gz je vois qu'il n'y a pas les .so
mais les sources (repertoire jni), il te suffit donc de créer une lib native avec gcc....
"La chose qui m'intrigue c'est que je ne me suis jamais soucié de
cdfNativeLibrary.dll et cdfNativeLibrary.lib
sous windows. Je n'ai
jamais eu a les inclure ou que ce soi,
j'ai juste inclu cdfjava.jar
dans le classpath de mon manifest,
et lui ne contient rien non plus sur
ces deux fichiers dans son propre manifest."
>>Sous windows le "library path" commence dans le répertoire courant de l'appelant
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
cs_zinZ
Messages postés21Date d'inscriptionvendredi 15 juin 2007StatutMembreDernière intervention14 septembre 2007 27 juil. 2007 à 14:11
Merci beaucoup,
Sympa d'avoir télécharger le fichier pour voir à quoi ca ressemblait.
Je n'arrive pas a compiler avec gcc.
gcc cdfNativeLibrary.c
In file included from cdfNativeLibrary.c:55:
cdfjava.h:5:20: cdflib.h: No such file or directory
cdfjava.h:6:22: cdflib64.h: No such file or directory
In file included from cdfjava.h:7,
from cdfNativeLibrary.c:55:
cdfNativeLibrary.h:3:17: jni.h: No such file or directory
In file included from cdfjava.h:7,
from cdfNativeLibrary.c:55:
Je suis sur une machine HP-UX.
Et j'ai lu ca dans la faq cdf.
The above systems are fully supported for CDF 2.5, 2.6, and 2.7. CDF 3.0
supports all the platforms listed above except for the HP-UX and IBM AIX
operating systems (due to lack of interest and hardware). If you need to
run the CDF 3.0 software on HP-UX or IBM AIX, please contact
cdfsupport@listserv.gsfc.nasa.gov.
J'ai envoyer un mail mais je sais pas si il vont répondre.
Dans le userguide de cdf j'ai aussi lu ceci :
libcdf.a The static CDF library on UNIX systems.
libcdf.sl The dynamic CDF library on HP-UX systems.
libcdf.so The dynamic CDF library on UNIX (other than HP-UX).
Question en passant : Quelle différence entre librairie statique et dynamique ?
Donc pour moi il ne faut pas un .so mais a priori un .sl
Or j'ai trouvé un fichier cdf3-0 sur la machine que j'utilise, il semble donc déja installé. Dedans il y a libcdf.sl et un libcdf.a
Est ce que ca peut m'aider ?
J'ai essayer de compiler avec java -Djava.library.path="Rep lib" -jar "nom".jar
Mais ca ne marche pas plus, exactement la même erreur.
QQun voit qqchose qui pourrait m'aider ?
Vous n’avez pas trouvé la réponse que vous recherchez ?