Hi There, Just to clarify things if you have the following:
package test; public class Test1 { public native int getVersion(); //load the library static { try { System.loadLibrary("SystemUtilities"); } catch (java.lang.UnsatisfiedLinkError e) { e.printStackTrace(); } } public Test1() { System.out.println("Version - getVersion()"); } } Then the native C code should look like this JNIEXPORT jint JNICALL Java_test_Test1 (JNIEnv *env, jobject jo, jstring js) { return 1; } This should then be built as a dll and placed in the windows/system32 directory. Example class using the native function import test.Test1; public class Version { public Version() { } public static void main (String args[]) { Test1 t1 = new Test1(); } } This should then display the following Version - 1 My guess is that the native c function does not match the class path, this would result in the error that you are seeing. Thanks Pete -----Original Message----- From: armalai_uk [mailto:[EMAIL PROTECTED] Sent: 23 April 2004 14:12 To: Tomcat Users List Subject: Re: Accessing Dll's Hi., This code has been written in JDK 1.3.0_03 couple of years back and i implemented in JRun 3.1 Now i'm trying to use this same code in Tomcat 4.1 with J2SDK 1.4.2_03. According to your previos mail i understand that i have to rewrite the code using J2SDK 1.4.2 specifications. Is it correct? Can you please give me the steps that i have to do inorder to make my code compatible to 1.4.2.. Thanks., MALAI ----- Original Message ----- From: "Wade Chandler" <[EMAIL PROTECTED]> To: "Tomcat Users List" <[EMAIL PROTECTED]> Sent: Friday, April 23, 2004 12:52 AM Subject: Re: Accessing Dll's > Wade Chandler wrote: > > > Annamalai Ramasamy wrote: > > > >> Hi., > >> Yes,I did see my dll path using this line. > >> > >> Thanks., > >> MALAI > >> Ryan Lissack <[EMAIL PROTECTED]> wrote: > >> Hi, > >> > >> Execute the following : > >> > >> System.out.println(System.getProperty("java.library.path")); > >> > >> See what directories are there. If the one(s) with your DLL(s) are not > >> listed you can add them as a startup param to the VM using the -D option > >> (java -Djava.library.path=.....) > >> > >> HTH > >> > >> Regards, > >> Ryan. > >> > >> -----Original Message----- > >> From: Annamalai Ramasamy [mailto:[EMAIL PROTECTED] > >> Sent: 22 April 2004 16:33 > >> To: Tomcat Users List > >> Subject: RE: Accessing Dll's > >> > >> > >> Hi., > >> Check my below java code. > >> I do not have native source codes. > >> > >> I'm sure there is no version conflicts. > >> But i have copied the dll in more than one places..like winnt, > >> system32 and > >> jre/bin like that. > >> > >> any idea? > >> > >> public class AddressValidate { > >> > >> private Address inad; > >> private Address outad; > >> private String usercompany; > >> > >> public StringBuffer csReturnErrorMsg; > >> public StringBuffer csReturnStreet; > >> public StringBuffer csReturnCityName; > >> public StringBuffer csReturnCounty; > >> public StringBuffer csReturnState; > >> public StringBuffer csReturnZip; > >> //To load DLL AvsWebInrterface static{ > >> try{ > >> System.loadLibrary("AvsWebInterface"); > >> System.out.println("DLL Loaded"); }catch(Exception e){ > >> System.err.println("Could not load DLL \"AvsWebInterface \" : > >> "+e.toString()); > >> System.out.println("Could not load DLL \"AvsWebInterface \" : > >> "+e.toString()); > >> > >> }catch(Throwable e){ > >> System.err.println("Could not load DLL \"AvsWebInterface:\" > >> "+e.toString()); > >> System.out.println("Could not load DLL \"AvsWebInterface:\" > >> "+e.toString()); > >> } > >> } //end of static > >> //-------------------------------------------------------------------------- > >> > >> - > >> > >> //Native method implemented in cpp public native String > >> JAVAAVSValidate (String company, String street1, String city, String > >> state, String zip, StringBuffer csReturnStreet, StringBuffer > >> csReturnCityName, StringBuffer csReturnCounty, StringBuffer > >> csReturnState, StringBuffer csReturnZip, StringBuffer csReturnErrorMsg) ; > >> //-------------------------------------------------------------------------- > >> > >> - > >> public AddressValidate(){ > >> inad=null; > >> outad=null; > >> usercompany=new String(""); > >> > >> } > >> //-------------------------------------------------------------------------- > >> > >> - > >> public String validate (Address inad,Address outad){ > >> csReturnStreet=new StringBuffer(""); csReturnCityName=new > >> StringBuffer(""); csReturnCounty=new StringBuffer(""); > >> csReturnState=new StringBuffer(""); csReturnZip=new StringBuffer(""); > >> csReturnErrorMsg=new StringBuffer(""); this.inad=inad; > >> this.outad=outad; > >> > >> > >> try{ > >> // System.out.println("Street1 :"+inad.Street1); > >> // System.out.println("city :"+inad.City); > >> // System.out.println("state :"+inad.State); > >> // System.out.println("postalcode"+inad.PostalCode); > >> > >> JAVAAVSValidate (usercompany, > >> inad.Street1, > >> inad.City, > >> inad.State, > >> inad.PostalCode, csReturnStreet, csReturnCityName, csReturnCounty, > >> csReturnState, csReturnZip, csReturnErrorMsg); > >> outad.Street1 = csReturnStreet.toString(); outad.City = > >> csReturnCityName.toString(); outad.County = csReturnCounty.toString(); > >> outad.State = csReturnState.toString(); outad.PostalCode = > >> csReturnZip.toString(); // System.out.println("Street1 :"+outad.Street1); > >> // System.out.println("city :"+outad.City); > >> // System.out.println("state :"+outad.State); > >> // System.out.println("postalcode"+outad.PostalCode); > >> > >> }catch(Exception e){ > >> System.out.println("Error in Validating Address " + e.toString()); > >> } > >> > >> return (csReturnErrorMsg.toString()); > >> } > >> > >> > >> } > >> > >> Peter Guyatt wrote: > >> Hi There, > >> > >> Can I see you native code and your class that declares you native > >> methods. > >> > >> Thanks > >> > >> Pete > >> > >> -----Original Message----- > >> From: Mark Schmeets [mailto:[EMAIL PROTECTED] > >> Sent: 22 April 2004 16:13 > >> To: Tomcat Users List > >> Subject: Re: Accessing Dll's > >> > >> > >> Hi, > >> Is it possible that this dll is being loaded somewhere else in your > >> instance? > >> My experience with this error came from trying to use the Oracle native > >> JDBC drivers. It usually came down to one of three issues, first that > >> the dll couldn't be "found", second that another web-app had already > >> loaded it, third it was a dll versioning problem. > >> Hope it helps. > >> > >> Mark > >> > >> Annamalai Ramasamy wrote: > >> > >> > >>> Hi., > >>> Again same error. > >>> I did put the dll to /jre/bin and winnt/system32. > >>> Any other ideas please... > >>> Thanks., > >>> MALAI > >>> > >>> Hans Wichman wrote: > >>> sorry, i meant lib\bin\ instead of lib\ext\ > >>> > >>> grtz > >>> Sorv > >>> > >>> At 03:43 PM 4/22/2004 +0100, Annamalai Ramasamy wrote: > >>> > >>> > >>> > >>>> Hi., > >>>> Again Same Error.. > >>>> Actually after the System.loadlibrary..i can able to see my > >>>> system.out.println values. > >>>> Then while trying to call my method i'm getting UnsatishfiedLinkError. > >>>> Thanks., > >>>> MALAI > >>>> > >>>> Hans Wichman wrote: > >>>> try putting them in the lib/ext folder of your j2sdk1.4.2_03 folder. > >>>> > >>>> grtz > >>>> Sorv > >>>> > >>>> At 03:24 PM 4/22/2004 +0100, Annamalai Ramasamy wrote: > >>>> > >>>> > >>>> > >>>>> Hi., > >>>>> I'm using Tomcat4.0.29 with J2SDK 1.4.2_03. > >>>>> I have my native libraries(dll's) in winnt folder. > >>>>> I'm loading the dll thru System.loadlibrary and accessing the methods. > >>>>> I'm getting UnsatishfiedLinkError. > >>>>> My class files are in my web-inf classes directory. > >>>>> In forums i searcehed, and i tried out all possibility like > >>>>> setting path and changing my classes to common/classes and all. > >>>>> Please give me your suggestions... > >>>>> Thanks., > >>>>> MALAI > >>>>> > >>>>> > >>>>> --------------------------------- > >>>>> Yahoo! Messenger - Communicate instantly..."Ping" your friends today! > >>>>> Download Messenger Now > >>>>> > >>>>> > >>>> > >>>> --------------------------------------------------------------------- > >>>> To unsubscribe, e-mail: [EMAIL PROTECTED] > >>>> For additional commands, e-mail: [EMAIL PROTECTED] > >>>> > >>>> > >>>> --------------------------------- > >>>> Yahoo! Messenger - Communicate instantly..."Ping" your friends today! > >>>> Download Messenger Now > >>>> > >>>> > >>> > >>> > >>> --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: [EMAIL PROTECTED] > >>> For additional commands, e-mail: [EMAIL PROTECTED] > >>> > >>> > >>> --------------------------------- > >>> Yahoo! Messenger - Communicate instantly..."Ping" your friends today! > >> > >> > >> Download Messenger Now > >> > >>> > >> > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> For additional commands, e-mail: [EMAIL PROTECTED] > >> > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> For additional commands, e-mail: [EMAIL PROTECTED] > >> > >> > >> --------------------------------- > >> Yahoo! Messenger - Communicate instantly..."Ping" your friends today! > >> Download Messenger Now > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> For additional commands, e-mail: [EMAIL PROTECTED] > >> > >> > >> --------------------------------- > >> Yahoo! Messenger - Communicate instantly..."Ping" your friends > >> today! Download Messenger Now > > > > This may sound like a strange question, though I have not seen it asked. > > Are you using JNI? You have to use JNI to be able to access the > > methods. The library could load fine, but the DLL still not be found. > > Also, did you use javah to create your h file? If not this is your > > problem. You have a special set of entry points so the C code can be > > used by the java code. C++ name mangling causes issues, and the JNI has > > a special way it looks for method names. If you are not using JNI you > > can look it up in the latest java docs. > > > > Wade > > > > > I meant the library could load fine and the methods still not be found > in the dll. This is because of the naming conventions. > > Wade. > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]