IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Impl�menter JVM en C++ avec JNI


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2016
    Messages
    60
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activit� : Etudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Avril 2016
    Messages : 60
    Par d�faut Impl�menter JVM en C++ avec JNI
    Bonjour � tous, depuis bient�t deux jours j'essaie d'impl�menter ma premi�re JVM en C++ afin d'ex�cuter ma m�thode expos�e dans ma classe java eh bien mais �a va pas.
    ci-dessous mes classes et tous les fichiers et arborescences:

    fichier.java
    Code Java : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package fc.Application.JVMHost.Java;
     
    public class TestJava {
     
    	public static void hello(String name)
    	{
    		System.out.println("Hello Word (from Java) " + name);
    	}
    	public static void main(String[] args) {
    	}
    }

    Code CMakeLists : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    cmake_minimum_required (VERSION 3.1)
     
    project (tpInterop)
     
    set(CMAKE_CXX_STANDARD 11)
    find_package(JNI REQUIRED)
     
    INCLUDE_DIRECTORIES(${JNI_INCLUDE_DIRS})
     
    add_executable(tpInterop main.cpp)
    target_link_libraries(tpInterop ${JNI_LIBRARIES})

    fichier cpp

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    #include <jni.h>
    #include <iostream>
    #include <string.h>
    using namespace std;
    int main(int argc, char **argv)
    {
    	std::cout << "Hello" << std::endl;
    	char path[1000]="-Djava.class.path=../../tpInteropCppJava_Java/bin/fc.Application.JVMHost.Java/";
     
    JavaVMOption jvmopt[1];
    jvmopt[0].optionString = path;
    JavaVMInitArgs vmArgs;
    vmArgs.version = JNI_VERSION_1_2;
    vmArgs.nOptions = 1;
    vmArgs.options = jvmopt;
    vmArgs.ignoreUnrecognized = JNI_TRUE;
    JavaVMInitArgs vm_args;
    JNIEnv *jniEnv;
    JavaVM *javaVM;
    //JNIEnv * env;
    long indicateur = JNI_CreateJavaVM(&javaVM, (void**)&jniEnv, &vmArgs);
     
    if(indicateur == JNI_ERR){
           cout << "Erreur lors de la création de la machine virtuelle. Sortie ... \n";
           return 1;
    }
    jclass jcls = jniEnv->FindClass("fc/Application/JVMHost/Java/TestJava");
     
    if (jcls == NULL) {
        if( jniEnv->ExceptionOccurred() )
            jniEnv->ExceptionDescribe();
        else
            cout << "clsMain is null but no exception was thrown."  << endl;
        javaVM->DestroyJavaVM ();
        return 1;
    }
     
    	javaVM-> DestroyJavaVM ();
    	return 0;
    }
    Pour les arborescences comme indiqu� dans mon code cpp, j'ai mon programme Java dans un dossier du nom tpInteropCppJava_Java puis tout ce qui suit notamment le r�pertoire bin et les packages fc.Application..... jusqu'au fichier.class
    et quand j'indique � mon env->findClass("mes/package/maclass") il me donne une erreur

    Exception in thread "main" java.lang.NoClassDefFoundError: fc/Application/JVMHost/Java/TestJava
    Caused by: java.lang.ClassNotFoundException: fc.Application.JVMHost.Java.TestJava
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    Et j'ai tout mis dans ma classe path peut-�tre sauf le bon et j'ai vivement besoin de vos aides afin que je puisse bouger de l� depuis bient�t deux jours.
    Je vous remercie d'avance.

  2. #2
    Invit�
    Invit�(e)
    Par d�faut
    Bonjour,

    Citation Envoy� par ouste4863 Voir le message
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    char path[1000]="-Djava.class.path=../../tpInteropCppJava_Java/bin/fc.Application.JVMHost.Java/";
    Si j'ai bien compris ta hi�rarchie, tu devrais plut�t avoir :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    char path[] = "-Djava.class.path=../../tpInteropCppJava_Java/bin/";
    qui est le point d�part du chemin du .class que tu indiques l� :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    jclass jcls = jniEnv->FindClass("fc/Application/JVMHost/Java/TestJava");

  3. #3
    Membre confirm�
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2016
    Messages
    60
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activit� : Etudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Avril 2016
    Messages : 60
    Par d�faut
    Ohhh mon Dieu mille merci WInjerome. Ca marche et une fois encore je vous remercie, je m'�tais embrouill� avec ma classe path.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 6
    Dernier message: 23/07/2008, 00h44
  2. impl�mentation d'une pile avec 2 files
    Par seb__ dans le forum Langage
    R�ponses: 5
    Dernier message: 23/09/2006, 13h59
  3. [JNI]Probl�me de package avec jni
    Par picomz dans le forum Entr�e/Sortie
    R�ponses: 1
    Dernier message: 10/08/2006, 15h43
  4. [JNI] Integration de composant activeX avec JNI
    Par PT!TLFE dans le forum Entr�e/Sortie
    R�ponses: 2
    Dernier message: 03/04/2006, 08h45
  5. Acc�s dll depuis java avec JNI
    Par romano21 dans le forum Entr�e/Sortie
    R�ponses: 11
    Dernier message: 25/10/2005, 14h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo