<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Commentaires sur : Appeler du Java depuis .Net</title>
	<atom:link href="http://grozeille.com/2008/05/08/appeler-du-java-depuis-net/feed/" rel="self" type="application/rss+xml" />
	<link>http://grozeille.com/2008/05/08/appeler-du-java-depuis-net/</link>
	<description>Just another Wordpress.com weblog</description>
	<lastBuildDate>Sat, 07 Jan 2012 12:00:31 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>Par : keson</title>
		<link>http://grozeille.com/2008/05/08/appeler-du-java-depuis-net/#comment-195</link>
		<dc:creator><![CDATA[keson]]></dc:creator>
		<pubDate>Mon, 02 Nov 2009 16:00:27 +0000</pubDate>
		<guid isPermaLink="false">http://grozeille.wordpress.com/?p=53#comment-195</guid>
		<description><![CDATA[Ca marche! J&#039;ai modifier la variable d&#039;environnement ainsi que les chemin d&#039;acces aux fichiers jni.h et jni_md.h et jvm.lib.

Merci!]]></description>
		<content:encoded><![CDATA[<p>Ca marche! J&#8217;ai modifier la variable d&#8217;environnement ainsi que les chemin d&#8217;acces aux fichiers jni.h et jni_md.h et jvm.lib.</p>
<p>Merci!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : grozeille</title>
		<link>http://grozeille.com/2008/05/08/appeler-du-java-depuis-net/#comment-194</link>
		<dc:creator><![CDATA[grozeille]]></dc:creator>
		<pubDate>Fri, 30 Oct 2009 23:35:50 +0000</pubDate>
		<guid isPermaLink="false">http://grozeille.wordpress.com/?p=53#comment-194</guid>
		<description><![CDATA[Bon, je viens de re-tester et ça marche -_-&quot;.
Pour la petite histoire, je suis sous Win7x64/VS2008, je force me met en configuration &quot;Win32&quot;, je force le projet C# à du &quot;x86&quot;, et ma variables d&#039;environnement &quot;JAVA_HOME&quot; pointe sur la version &quot;x86&quot;.
De plus, j&#039;ai ajouté dans la PATH le chemin vers &quot;jvm.dll&quot; (ATTENTION, pas la version &quot;server&quot;, mais celle du dossier &quot;client&quot;).
Et voila, ça marche...
Mais j&#039;ai un problème avec les conversions de chaines (AccessViolationException)...

Concernant ton problème de résolution de classe, est-ce que tu fais bien un &quot;InitJvm&quot; avec l&#039;option &quot;-Djava.class.path=Mathias.Jni.Java.jar&quot; (qui signifie: charge ce .jar pour y trouver des classes) ? ça a l&#039;air d&#039;être ça... je rappelle que tu peux en mettre plusieurs séparés par des des &quot;;&quot;]]></description>
		<content:encoded><![CDATA[<p>Bon, je viens de re-tester et ça marche -_-&#8221;.<br />
Pour la petite histoire, je suis sous Win7x64/VS2008, je force me met en configuration &#8220;Win32&#8243;, je force le projet C# à du &#8220;x86&#8243;, et ma variables d&#8217;environnement &#8220;JAVA_HOME&#8221; pointe sur la version &#8220;x86&#8243;.<br />
De plus, j&#8217;ai ajouté dans la PATH le chemin vers &#8220;jvm.dll&#8221; (ATTENTION, pas la version &#8220;server&#8221;, mais celle du dossier &#8220;client&#8221;).<br />
Et voila, ça marche&#8230;<br />
Mais j&#8217;ai un problème avec les conversions de chaines (AccessViolationException)&#8230;</p>
<p>Concernant ton problème de résolution de classe, est-ce que tu fais bien un &#8220;InitJvm&#8221; avec l&#8217;option &#8220;-Djava.class.path=Mathias.Jni.Java.jar&#8221; (qui signifie: charge ce .jar pour y trouver des classes) ? ça a l&#8217;air d&#8217;être ça&#8230; je rappelle que tu peux en mettre plusieurs séparés par des des &#8220;;&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : keson</title>
		<link>http://grozeille.com/2008/05/08/appeler-du-java-depuis-net/#comment-193</link>
		<dc:creator><![CDATA[keson]]></dc:creator>
		<pubDate>Thu, 29 Oct 2009 23:22:55 +0000</pubDate>
		<guid isPermaLink="false">http://grozeille.wordpress.com/?p=53#comment-193</guid>
		<description><![CDATA[merci. Je teste ca et je te tiens au courant]]></description>
		<content:encoded><![CDATA[<p>merci. Je teste ca et je te tiens au courant</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : grozeille</title>
		<link>http://grozeille.com/2008/05/08/appeler-du-java-depuis-net/#comment-192</link>
		<dc:creator><![CDATA[grozeille]]></dc:creator>
		<pubDate>Thu, 29 Oct 2009 23:17:02 +0000</pubDate>
		<guid isPermaLink="false">http://grozeille.wordpress.com/?p=53#comment-192</guid>
		<description><![CDATA[PS: test la DLL C++ avec http://www.dependencywalker.com/ pour voir s&#039;il n&#039;y a pas de problème de dépendances natives...]]></description>
		<content:encoded><![CDATA[<p>PS: test la DLL C++ avec <a href="http://www.dependencywalker.com/" rel="nofollow">http://www.dependencywalker.com/</a> pour voir s&#8217;il n&#8217;y a pas de problème de dépendances natives&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : grozeille</title>
		<link>http://grozeille.com/2008/05/08/appeler-du-java-depuis-net/#comment-191</link>
		<dc:creator><![CDATA[grozeille]]></dc:creator>
		<pubDate>Thu, 29 Oct 2009 23:15:56 +0000</pubDate>
		<guid isPermaLink="false">http://grozeille.wordpress.com/?p=53#comment-191</guid>
		<description><![CDATA[Salut, Je vais voir ça...
ça fait longtemps que je n&#039;ai pas touché à du C++/CLI, et je n&#039;arrive même plus à le compiler depuis que je suis sous VS2008 + Windows7 x64 -_-&quot; Je te tiens au courant]]></description>
		<content:encoded><![CDATA[<p>Salut, Je vais voir ça&#8230;<br />
ça fait longtemps que je n&#8217;ai pas touché à du C++/CLI, et je n&#8217;arrive même plus à le compiler depuis que je suis sous VS2008 + Windows7 x64 -_-&#8221; Je te tiens au courant</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : keson</title>
		<link>http://grozeille.com/2008/05/08/appeler-du-java-depuis-net/#comment-190</link>
		<dc:creator><![CDATA[keson]]></dc:creator>
		<pubDate>Thu, 29 Oct 2009 16:07:43 +0000</pubDate>
		<guid isPermaLink="false">http://grozeille.wordpress.com/?p=53#comment-190</guid>
		<description><![CDATA[ca pète dans MyJavaWrapper
La ligne exacte c&#039;est:
this-&gt;obj = JVMWrapper::env-&gt;NewObject(MyJavaWrapper::clazz, MyJavaWrapper::initMethodId);]]></description>
		<content:encoded><![CDATA[<p>ca pète dans MyJavaWrapper<br />
La ligne exacte c&#8217;est:<br />
this-&gt;obj = JVMWrapper::env-&gt;NewObject(MyJavaWrapper::clazz, MyJavaWrapper::initMethodId);</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : keson</title>
		<link>http://grozeille.com/2008/05/08/appeler-du-java-depuis-net/#comment-189</link>
		<dc:creator><![CDATA[keson]]></dc:creator>
		<pubDate>Thu, 29 Oct 2009 15:53:17 +0000</pubDate>
		<guid isPermaLink="false">http://grozeille.wordpress.com/?p=53#comment-189</guid>
		<description><![CDATA[Bonjour, j&#039;ai tester votre exemple d&#039;utilisation de JNI, mais je rencontre aussi un problem au niveau du FindClass, il ne récupère pas ma classe. Pouvez vous m&#039;aider s&#039;il vous plait?]]></description>
		<content:encoded><![CDATA[<p>Bonjour, j&#8217;ai tester votre exemple d&#8217;utilisation de JNI, mais je rencontre aussi un problem au niveau du FindClass, il ne récupère pas ma classe. Pouvez vous m&#8217;aider s&#8217;il vous plait?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Olivier</title>
		<link>http://grozeille.com/2008/05/08/appeler-du-java-depuis-net/#comment-73</link>
		<dc:creator><![CDATA[Olivier]]></dc:creator>
		<pubDate>Fri, 20 Feb 2009 16:51:42 +0000</pubDate>
		<guid isPermaLink="false">http://grozeille.wordpress.com/?p=53#comment-73</guid>
		<description><![CDATA[Voici la class qui marche 
[code language=&#039;cpp&#039;]
public ref class JVMWrapper abstract
{
public:
	
	static JNIEnv *env;
	static JavaVM *jvm;

private :

	//[System::Runtime::InteropServices::DllImportAttribute(&quot;jvm.dll&quot;)]
	//static jint JNI_CreateJavaVM(JavaVM **p_vm, void** p_env, void *vm_args);
	typedef jint (JNICALL *CreateJavaVM_t)(JavaVM **, void **, JavaVMInitArgs *);


	static void *JNU_FindCreateJavaVM(char *vmlibpath)
	{
		HINSTANCE hVM = LoadLibrary((LPCWSTR)vmlibpath);
		if (hVM == NULL) {
			return NULL;
		}
		return GetProcAddress(hVM, &quot;JNI_CreateJavaVM&quot;);
	}
		

public:
	/* Permet d&#039;initialiser une JVM */
	static void InitJvm(cli::array^ options)
	{
		//CreateJavaVM_t * CreateJavaVM;
		CreateJavaVM_t createJavaVM;

		LPCWSTR str= L&quot;C:\\Program Files\\Java\\jdk1.6.0_12\\jre\\bin\\client\\jvm.dll&quot;;

		HINSTANCE hinst = ::LoadLibrary(str);
		
		//  CreateJavaVM_t * pfnCreateJavaVM; 
		//createJavaVM = (CreateJavaVM_t) GetProcAddress(hinst, &quot;JNI_CreateJavaVM&quot;);


		JavaVMInitArgs *  vm_args;
		vm_args = new JavaVMInitArgs();
		JavaVMOption* jvmOptions = new JavaVMOption[options-&gt;Length];
		
		for(int i = 0; i Length; i++)
		{
			jvmOptions[i] = JavaVMOption();

			pin_ptr wch = PtrToStringChars(options[i]);

			size_t convertedChars = 0;
			size_t  sizeInBytes = ((options[i]-&gt;Length + 1) * 2);
			errno_t err = 0;
			jvmOptions[i].optionString = (char *)malloc(sizeInBytes);

			wcstombs_s(&amp;convertedChars, jvmOptions[i].optionString, sizeInBytes, wch, sizeInBytes);			
		}
		
		vm_args-&gt;version = JNI_VERSION_1_4;
		vm_args-&gt;options = jvmOptions;
		vm_args-&gt;nOptions = options-&gt;Length;
		vm_args-&gt;ignoreUnrecognized = JNI_TRUE;

		JavaVM * nativeJvm;
		JNIEnv * nativeEnv;
		//jint vmError = JNI_CreateJavaVM(&amp;nativeJvm,(void **)&amp;nativeEnv, &amp;vm_args);
		//jint vmError=pfnCreateJavaVM(&amp;nativeJvm,(void **)&amp;nativeEnv, &amp;vm_args);
		createJavaVM = (CreateJavaVM_t) GetProcAddress(hinst, &quot;JNI_CreateJavaVM&quot;);

		jint vmError = (*createJavaVM)(&amp;nativeJvm, (void **)&amp;nativeEnv, vm_args);

		delete [] jvmOptions;
		jvmOptions = NULL;

		JVMWrapper::jvm = nativeJvm;
		JVMWrapper::env = nativeEnv;

		if(vmError) DestroyJavaVM();
		if(vmError &lt; 0)
			throw gcnew Exception(&quot;Failed to destroy JVM, error number: &quot; + vmError);
	}
}
[/code]]]></description>
		<content:encoded><![CDATA[<p>Voici la class qui marche </p>
<pre class="brush: cpp;">
public ref class JVMWrapper abstract
{
public:
	
	static JNIEnv *env;
	static JavaVM *jvm;

private :

	//[System::Runtime::InteropServices::DllImportAttribute(&quot;jvm.dll&quot;)]
	//static jint JNI_CreateJavaVM(JavaVM **p_vm, void** p_env, void *vm_args);
	typedef jint (JNICALL *CreateJavaVM_t)(JavaVM **, void **, JavaVMInitArgs *);


	static void *JNU_FindCreateJavaVM(char *vmlibpath)
	{
		HINSTANCE hVM = LoadLibrary((LPCWSTR)vmlibpath);
		if (hVM == NULL) {
			return NULL;
		}
		return GetProcAddress(hVM, &quot;JNI_CreateJavaVM&quot;);
	}
		

public:
	/* Permet d'initialiser une JVM */
	static void InitJvm(cli::array^ options)
	{
		//CreateJavaVM_t * CreateJavaVM;
		CreateJavaVM_t createJavaVM;

		LPCWSTR str= L&quot;C:\\Program Files\\Java\\jdk1.6.0_12\\jre\\bin\\client\\jvm.dll&quot;;

		HINSTANCE hinst = ::LoadLibrary(str);
		
		//  CreateJavaVM_t * pfnCreateJavaVM; 
		//createJavaVM = (CreateJavaVM_t) GetProcAddress(hinst, &quot;JNI_CreateJavaVM&quot;);


		JavaVMInitArgs *  vm_args;
		vm_args = new JavaVMInitArgs();
		JavaVMOption* jvmOptions = new JavaVMOption[options-&gt;Length];
		
		for(int i = 0; i Length; i++)
		{
			jvmOptions[i] = JavaVMOption();

			pin_ptr wch = PtrToStringChars(options[i]);

			size_t convertedChars = 0;
			size_t  sizeInBytes = ((options[i]-&gt;Length + 1) * 2);
			errno_t err = 0;
			jvmOptions[i].optionString = (char *)malloc(sizeInBytes);

			wcstombs_s(&amp;convertedChars, jvmOptions[i].optionString, sizeInBytes, wch, sizeInBytes);			
		}
		
		vm_args-&gt;version = JNI_VERSION_1_4;
		vm_args-&gt;options = jvmOptions;
		vm_args-&gt;nOptions = options-&gt;Length;
		vm_args-&gt;ignoreUnrecognized = JNI_TRUE;

		JavaVM * nativeJvm;
		JNIEnv * nativeEnv;
		//jint vmError = JNI_CreateJavaVM(&amp;nativeJvm,(void **)&amp;nativeEnv, &amp;vm_args);
		//jint vmError=pfnCreateJavaVM(&amp;nativeJvm,(void **)&amp;nativeEnv, &amp;vm_args);
		createJavaVM = (CreateJavaVM_t) GetProcAddress(hinst, &quot;JNI_CreateJavaVM&quot;);

		jint vmError = (*createJavaVM)(&amp;nativeJvm, (void **)&amp;nativeEnv, vm_args);

		delete [] jvmOptions;
		jvmOptions = NULL;

		JVMWrapper::jvm = nativeJvm;
		JVMWrapper::env = nativeEnv;

		if(vmError) DestroyJavaVM();
		if(vmError &lt; 0)
			throw gcnew Exception(&quot;Failed to destroy JVM, error number: &quot; + vmError);
	}
}
</pre>
]]></content:encoded>
	</item>
	<item>
		<title>Par : Olivier</title>
		<link>http://grozeille.com/2008/05/08/appeler-du-java-depuis-net/#comment-72</link>
		<dc:creator><![CDATA[Olivier]]></dc:creator>
		<pubDate>Fri, 20 Feb 2009 16:50:46 +0000</pubDate>
		<guid isPermaLink="false">http://grozeille.wordpress.com/?p=53#comment-72</guid>
		<description><![CDATA[salut merci pour ta reponse 
J&#039;ai resolu le probleme maintenant c&#039;est au niveau de l&#039;appelle de FindClass() pour récupérer L&#039;ID de la classe qui ne marche pas du coup c&#039;est l&#039;apelle de this-&gt;obj = JVMWrapper::env-&gt;NewObject(MyJavaWrapper::clazz,initMethodId,Converter.java); plante. Pourtant je passe bien le repertoire projet contenanr mon mi fichier .jar  à l&#039;initialisation de la JVM]]></description>
		<content:encoded><![CDATA[<p>salut merci pour ta reponse<br />
J&#8217;ai resolu le probleme maintenant c&#8217;est au niveau de l&#8217;appelle de FindClass() pour récupérer L&#8217;ID de la classe qui ne marche pas du coup c&#8217;est l&#8217;apelle de this-&gt;obj = JVMWrapper::env-&gt;NewObject(MyJavaWrapper::clazz,initMethodId,Converter.java); plante. Pourtant je passe bien le repertoire projet contenanr mon mi fichier .jar  à l&#8217;initialisation de la JVM</p>
]]></content:encoded>
	</item>
	<item>
		<title>Par : grozeille</title>
		<link>http://grozeille.com/2008/05/08/appeler-du-java-depuis-net/#comment-71</link>
		<dc:creator><![CDATA[grozeille]]></dc:creator>
		<pubDate>Thu, 19 Feb 2009 07:07:40 +0000</pubDate>
		<guid isPermaLink="false">http://grozeille.wordpress.com/?p=53#comment-71</guid>
		<description><![CDATA[Salut! Je vais jeter un œil dès que j&#039;ai le temps. Mais en &quot;googlant&quot; rapidement le code d&#039;erreur (HResult) je &quot;devine&quot; que ton programme ne trouve pas la DLL de Java (jvm.dll). En C++ sous Windows, pour qu&#039;une DLL soit visible, il faut qu&#039;elle se trouve dans le PATH. Donc fait bien attention que le PATH pointe aussi sur JAVA_HOME/bin.
Si ça corrige ton problème, je vais alors corriger mon post :)
Sinon, ma solution est &quot;tricky&quot; et très bas niveau. Tu peux aussi utiliser des solutions &quot;pro&quot; comme http://www.jnbridge.com/jnbpro.htm ou http://dev.mainsoft.com/]]></description>
		<content:encoded><![CDATA[<p>Salut! Je vais jeter un œil dès que j&#8217;ai le temps. Mais en &#8220;googlant&#8221; rapidement le code d&#8217;erreur (HResult) je &#8220;devine&#8221; que ton programme ne trouve pas la DLL de Java (jvm.dll). En C++ sous Windows, pour qu&#8217;une DLL soit visible, il faut qu&#8217;elle se trouve dans le PATH. Donc fait bien attention que le PATH pointe aussi sur JAVA_HOME/bin.<br />
Si ça corrige ton problème, je vais alors corriger mon post <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Sinon, ma solution est &#8220;tricky&#8221; et très bas niveau. Tu peux aussi utiliser des solutions &#8220;pro&#8221; comme <a href="http://www.jnbridge.com/jnbpro.htm" rel="nofollow">http://www.jnbridge.com/jnbpro.htm</a> ou <a href="http://dev.mainsoft.com/" rel="nofollow">http://dev.mainsoft.com/</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>

