Monday, May 14, 2001 07:53 AM
you have more than one problem. The first is, that the Vector class does not declare a
get method. You have to use
The second is, that you're indeed right in assuming that you have to use the
(I)Ljava/lang/Object; signature. You always have to use the exact signature of the Java method.
The third is, that you're not doing any error checking or you would have detected that the methodID is 0.
If you were using our JunC++ion tool instead, you would have imported the Vector class and your own class and generated C++ proxy bindings for them. You would then have been faced with the following native implementation task:
void _cmj_Java_some_JNI_Method( jcpp_localenv * pEnv, java::lang::Object & _this, java::util::Vector & vecStrings )
java::lang::Object obj = vecStrings.elementAt( 0 );
java::lang::String str = String::dyna_cast( obj );
if( str != null )
//do something with it
throw IllegalArgumentException( "bad vector" );
Much nicer, right? You can find out more about JunC++ion at http://www.codemesh.com.