Exception in thread "main"

cs_maxinformatique Messages postés 1 Date d'inscription jeudi 25 janvier 2007 Statut Membre Dernière intervention 25 janvier 2007 - 25 janv. 2007 à 19:23
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 23 avril 2008 à 16:15
Bjr tout le monde,
à fin d'utiliser la JNI j'essaye le premier programme HelloWorld,
la partie java est codée avec JCreator,
et la partie C++ est codée avec Dev-Cpp, et voici les étapes:
Codage de la partie java:
public class HelloWorld
{ static { System.loadLibrary("HelloWorld"); }
   public static native void printCpp();
   public static void main(String args[])
   { System.out.print("HelloWorld in java ");
      HelloWorld.printCpp();
    }
}
Je compile et copie la classe HelloWorld.CLASS dans le bin du JDK
Par la suite je génére le fichier d'entête C++ par la commande javah HelloWorld
Je copie le fichier d'entête HelloWorld.h dans le bin du Dev-Cpp
Je code la partie C++ dans un projet contenant deux sources files:
main.c
void main(void)
{ }

HelloWorld.c
#include "HelloWorld.h"
#include <stdio.h>
#include <jni.h>
JNIEXPORT void JNICALL Java_HelloWorld_printCpp(JNIEnv *env, jclass obj)
{// Un affichage sur la console en C++
  printf("Hello world in C++");
}

Je compile, j'obtient HelloWorld.o main.o Makefile.win et une application HelloWorld
Je ne sais pas à quoi sert tout ça
Je génére la bibliothèque à chargement dynamique à l'aide de la ligne de commande:
g++ -o HelloWorld.dll -shared -I"C:\Dev-Cpp\bin" HelloWorld.c
Je copie en fin HelloWorld.dll dans le bin du JDK et j'éxecute, c'est la que j'obtient


Exception in thread "main" java.lang.UnsatisfiedLinkError: no HelloWorld in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682)
at java.lang.Rutime.loadLibrary()(Rutime.java:823)
at java.lang.System.loadLibrary(System.java:1030)
at HelloWorld.<clinit>(HelloWorld.java:2)

Je verifie mon path à l'aide de la commande path je trouve:
PATH=C:\WINDOWS\SYSTEM32;
C:\WINDOWS;
C:\WINDOWS\System32\Wbem;
C:\program files\ATI Technologies\ATI Control Panel;
C:\program files\java\jdk1.6.0\bin;
C:\Dev-Cpp

Que dois-je faire d'après vous pour que mon pgm puisse s'éxecuter

5 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
25 janv. 2007 à 21:05
Je ne connais absolument rien en Java, mais d'après ton message, je dirais qu'il manque un fichier relatif à ton programme dans le répertoire lib de Java, certainement Pragram Files/Java/Lib.

Ensuite quel fichier, je suis bien incapable de le dire.

D'ailleurs il me semblait que les programmes Java portaient l'extension .jar, alors que toi tu nous parle de .dll.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
25 janv. 2007 à 21:13
Déplacé sur javafr !


















<hr />
-Blog-
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
26 janv. 2007 à 09:52
Salut,

prend ta dll et mets la pres de ton fichier java (.class ou .jar ca depend de ce que tu as) est execute le tout avec cette ligne :

(cas d'un jar)
java -Djava.library.path=. -jar monJar.jar
cas d'une class
java -Djava.library.path=. MaMainClass

mai tu n'as pas besoin de le copier dans des rep systeme...

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
supergaga1712 Messages postés 5 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 24 avril 2008
23 avril 2008 à 16:09
Egalement, je pense qu'il y a un problème au niveau des types de chaînes de caractères, avec le format Unicode, qu'utilise Java. Il faut les convertir en ASCII pour le C, puis les reconvertir pour les envoyer vers java.

Ca se fait avec un "getStringUTFChars" il me semble.

Bon courage.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
23 avril 2008 à 16:15
Salut,

[auteur/SUPERGAGA1712/1313311.aspx supergaga1712]<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" /><title></title><meta name="GENERATOR" content="OpenOffice.org 2.4 (Linux)" /><style type="text/css"><!--
@page { size: 21cm 29.7cm; margin: 2cm }
P { margin-bottom: 0.21cm }
--></style>>





heuuuuuu ici il n'utilise pas les
chaînes java... il fait simplement un printf("Hello world in
C++"); donc uniquement du C/C++...
Le GetStringUTFChars n'est
à utiliser que dans le cas ou tu veux exploiter dans un code C/C++
une chaîne de caractères java.

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
Rejoignez-nous