Hi all<br><br>I&#39;m trying to use JNI with Kaffe but i&#39;ve encountering some problems<br><br>It&#39;s seems that my .so library to be found but when i&#39;m using the main class, i&#39;ve got the following error:<br><br>
<div style="margin-left: 40px;"># java fr.ptv.valence.katolecho.cannative.CanNative<br>java.lang.NoSuchMethodError: main<br>&nbsp;&nbsp; at java.lang.VMThrowable.fillInStackTrace (VMThrowable.java:native)<br>&nbsp;&nbsp; at java.lang.VMThrowable.fillInStackTrace
 (VMThrowable.java:79)<br>&nbsp;&nbsp; at java.lang.Throwable.fillInStackTrace (Throwable.java:498)<br>&nbsp;&nbsp; at java.lang.Throwable.&lt;init&gt; (Throwable.java:159)<br>&nbsp;&nbsp; at java.lang.Error.&lt;init&gt; (Error.java:81)<br>&nbsp;&nbsp; at java.lang.LinkageError
.&lt;init&gt; (LinkageError.java:72)<br>&nbsp;&nbsp; at java.lang.IncompatibleClassChangeError.&lt;init&gt; (IncompatibleClassChangeError.java:71)<br>&nbsp;&nbsp; at java.lang.NoSuchMethodError.&lt;init&gt; (NoSuchMethodError.java:72)<br></div>
<br>To check if my .java and the librairy were bugless, i&#39;ve just tried it with succeed under win2K and JDK1.6<br><br>The Java file is the following:<br><br><div style="margin-left: 40px;">package fr.ptv.valence.katolecho.cannative
;<br><br>public class CanNative {<br>&nbsp;&nbsp;&nbsp; char[] sentpaquet = new char[14];<br>&nbsp;&nbsp;&nbsp; char[] recievedpaquet = new char[14];<br>&nbsp;&nbsp;&nbsp; static {<br><br>&nbsp;&nbsp;&nbsp; if(System.getProperty (&quot;<a href="http://os.name">os.name</a>&quot;).equals(&quot;Linux&quot;))
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.loadLibrary(&quot;CanNative&quot;);<br>&nbsp;&nbsp;&nbsp; else System.loadLibrary(&quot;libCanNative&quot;); }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; public static void ThisIsATest(){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println(&quot;This Is a test&quot;);
<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; public native void printInfoRevision();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; public native char InitCan();<br>&nbsp;&nbsp;&nbsp; public native char CloseCan();<br>&nbsp;&nbsp;&nbsp; public native char SendCan(char[] sentpaquet);<br>&nbsp;&nbsp;&nbsp; public native String ReceiveCAN(String recievedpaquet, int nombre_de_paquets);
<br>&nbsp;&nbsp;&nbsp; public native int isBusOffCAN();<br>&nbsp;&nbsp;&nbsp; public native void PrintLastErrorCAN();<br>&nbsp;&nbsp;&nbsp; public native void CanBusFailed();<br>&nbsp;&nbsp;&nbsp; public native void CanReset();<br>&nbsp;&nbsp;&nbsp; public native int GetRxErr();<br>&nbsp;&nbsp;&nbsp; public native int GetTxErr();
<br>&nbsp;&nbsp;&nbsp; public native int GetSpeedCAN();<br>&nbsp;&nbsp;&nbsp; public native void CanTest();<br>&nbsp;&nbsp;&nbsp; public native void CloseStatusCAN();<br>&nbsp;&nbsp;&nbsp; public native String ReceiveStatusCAN(String recievedpaquet, int nombre_de_paquets);<br>&nbsp;&nbsp;&nbsp; public native char SendStatusCAN( char[] sentpaquet );
<br>&nbsp;&nbsp;&nbsp; public native char InitStatusCAN();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; public static void main (String argv [])<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; CanNative toto = new CanNative();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; toto.printInfoRevision();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; char[] sentpaquet=new char[14];
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sentpaquet[0]=&#39;A&#39;;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sentpaquet[1]=&#39;Z&#39;;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sentpaquet[2]=&#39;E&#39;;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sentpaquet[3]=&#39;R&#39;;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sentpaquet[4]=&#39;T&#39;;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sentpaquet[5]=&#39;Y&#39;;
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sentpaquet[6]=&#39;U&#39;;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sentpaquet[7]=&#39;I&#39;;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sentpaquet[8]=&#39;O&#39;;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sentpaquet[9]=&#39;P&#39;;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sentpaquet[10]=&#39;Q&#39;;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sentpaquet[11]=&#39;S&#39;;
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sentpaquet[12]=&#39;D&#39;;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sentpaquet[13]=&#39;F&#39;;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; String zozo = new String();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; toto.InitCan();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; toto.ReceiveCAN(zozo, 1);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; toto.SendCan(sentpaquet);&nbsp; &nbsp;&nbsp;  
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; toto.CloseCan();<br>&nbsp;&nbsp;&nbsp; }<br><br>}<br></div><br>I&#39;ve use jni.h and jni_m.h that come from kaffe (the one that i&#39;ve built) and built the class with the -1.3 parameter.<br><br>Does anyone have ever used JNI with Kaffe on an ARM target? is there any particular argument to use during the building step?
<br><br>With kind of regards<br><br>Frederic<br>