Please Help: Invoking GetStaticMethodID in cpp/c++ exception error
Hello everyone:
This is my first post, so please no bashing if I don't get it all the first time.
I have looked at this for days now to no avail. I also have read many many threads oon this site trying to get this fixed.
The issues is when I do a GetStaticMedthodID call from C++ on RedHat Linux 7.1, I get an exception thread in "main" ... java.lang.NoSuchMethodID: main.
Here is all of the cpp/c++ code, sorry about formating:
//Declare Preprocessor & Includes
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#define PATH_SEPERATOR ':'
#include <copyright.txt.h>
#define classpath "-Djava.class.path=./client.jar:-Djava.class.path=/usr/java/jdk1.3/jre/lib/rt.jar:";
#include <jni.h>
//******** Start Main Function *****************
int main(int argc, char *argv[])
{
char *usg = "\nUsage: \n";
char *copytext = Copyright_Text;
char *load = "rpic/client/cli/CLI";
char *lineopt = "\nError: Not enough options on command line\n";
char *clinusg = "\nError: Command line does not have the right options, see usage:";
char *cargs0 = argv[0];
char *cargs1 = argv[1];
char *cargs2 = argv[2];
char *cargs3 = argv[3];
//Declare JNI Enviroment Settings
JNIEnv *env;
JavaVM *jvm;
JavaVMInitArgs vm_args;
JavaVMOption options[3];
jclass cls;
jclass c;
jobjectArray ja;
jmethodID mid;
options[0].optionString = classpath;
options[1].optionString = "-Djava.library.path=/usr/java/jdk1.3/jre/lib";options[2].optionString= "-verbose:jni";
vm_args.version = JNI_VERSION_1_2;
vm_args.options = options;
vm_args.nOptions = 3;
vm_args.ignoreUnrecognized = JNI_FALSE;
if(argc < 3){
printf(lineopt);
printf(usg);
printf(copytext);
return 0;
}
else if(! ((strcmp(argv[2], "-auto")) || (strcmp(argv[2], "-norm"))) ) {
printf(clinusg);
printf(usg);
printf(copytext);
return 0;
}
else {
printf("\nTrying to Create JVM..............\n\n");
jint res=JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args);
if(! (res == JNI_OK) ){
printf("\nCould not initiate Java Virual Machine session. Verify Java Resource Environment (JRE 1.2.2 or higher) installation. \n\n");
return 0;
}
else{
c = env->FindClass("rpic/client/cli/CLI"); /*Classpath*/
if (env->ExceptionOccurred())
env->ExceptionDescribe();
return 0;
}
cls = env->FindClass("java/lang/String"); /*Java Classpath*/
if (env->ExceptionOccurred()){
env->ExceptionDescribe();
return 0;
}
if(c == 0){
printf("\nError: Could not load class /rpic/client/CLI from ./client.jar. Please ensure ./client.jar file from your **** is application in working directory\n");
return 0;
}
if(c !=0)
printf("\nSucsessfuly loaded /rpic/client/cli/CLI from ./client.jar..........\n");
if(cls == 0){
printf("\nError: Could not load class java/lang/string.");
return 0;
}
if(cls !=0)
printf("\nSucsessfuly loaded java/lang/string..........\n");
if(argc == 3)
ja = env->NewObjectArray(2,cls,NULL);
if (env->ExceptionOccurred()){
env->ExceptionDescribe();
printf("\nError: NewObjectArray for the command line options %s %s %s could not be set. \n",cargs0,cargs1,cargs2);
return 0;
}
else
ja = env->NewObjectArray(3,cls,NULL);
if (env->ExceptionOccurred()){
env->ExceptionDescribe();
printf("\nError: NewObjectArray for %s %s %scommand line options could not be set. \n",cargs1,cargs2,cargs3);
return 0;
}
env->SetObjectArrayElement(ja, 0, env->NewStringUTF(argv[1]));
if (env->ExceptionOccurred()){
env->ExceptionDescribe();
printf("Error: SetObjectArrayElement 0 for %s could not be loaded.\n",cargs1);
return 0;
}
env->SetObjectArrayElement(ja, 1, env->NewStringUTF(argv[2]));
if (env->ExceptionOccurred()){
env->ExceptionDescribe();
printf("Error: SetObjectArrayElement for %s could not be loaded.\n",cargs2);
return 0;
}
if(c != NULL)
printf("\n\n\nLoaded Find.Class rpic/client/cli/CLI \n");
if(c == NULL) {
printf("\nCould not load %s:. Please ensure working directory contains client.jar.\n\n", load);
return 0;
}
printf("\n\nStarting GetStaticMethodID \n\n");
mid = env->GetStaticMethodID(c, "main", "([java/lang/String)V");
if (env->ExceptionOccurred()){
env->ExceptionDescribe();
printf("Error: GetStaticMethodID Failed.\n");
return 0;
}
env->CallStaticVoidMethod(c,mid,ja);
if (env->ExceptionOccurred()){
env->ExceptionDescribe();
printf("Error: After setting JavaMethodID JVM failed with exception. \n");
return 0;
}
int *exit = 0;
pthread_exit(&exit);
return 1;
}
}
}
I have used the following during compilation
-L/usr/java/jdk1.3/jre/lib/i386 -L/usr/java/jdk1.3/jre/lib/i386/client -L/usr/java/jdk1.3/jre/lib/i386/native_threads
-ljvm -lhpi
I have exported the following enviroments:
LD_LIBRARY_PATH="/usr/java/jdk1.3/jre/lib/i386/classic:/usr/java/jdk1.3/jre/lib/i386/native_threads:/usr/java/jdk1.3/jre/lib/i386
CLASSPATH=/usr/java/jdk1.3/jre/bin/rt.jar:./
and $PATH has the correct path to the bin dir.
If I go to a bash shell and run:
java -classpath ./client.jar rpic/client/cli/CLI option1 -option2
it runs.
This version of the code compiled in visual c++ on a MS platform works as well. I belive this is just some thing I am doing wrong on Linux. Any and all help would be very much appreicated.
Best Regards
JFS
[6168 byte] By [
jfgoofy] at [2007-9-26 1:43:56]

bschauwe:
Thanks for your reply. During the cut and paste of the code, I somehow deleted the ';'. It is there in the code that is being compiled. To help others help me, I am attaching the full "verbose:jni,class,gc" output. I think the arrays are not being set correctly with java/lang/String but it looks to be correct (but obviously if it was it would actualy work).
Is there any information that is missing here that others may need to help. I will put up anything. As, there have been too many sleepless nights.
-Full Output From -Verbose:jni,class,gc -
[jason@mylinux ]$ ./myprogram option1 -norm
Trying to Create JVM..................................................
<GC: need to expand mark bits to cover 16384 bytes>
[Opened /usr/java/jdk1.3/jre/lib/rt.jar in 10 ms]
[Opened /usr/java/jdk1.3/jre/lib/i18n.jar in 1 ms]
[Opened /usr/java/jdk1.3/jre/lib/sunrsasign.jar in 0 ms]
[Loaded java.lang.NoClassDefFoundError from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.Class from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.Object from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.Throwable from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.Serializable from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/lang/Object.registerNatives ... JNI]
[Registering JNI native method java/lang/Object.hashCode]
[Registering JNI native method java/lang/Object.wait]
[Registering JNI native method java/lang/Object.notify]
[Registering JNI native method java/lang/Object.notifyAll]
[Registering JNI native method java/lang/Object.clone]
[Loaded java.lang.String from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.Comparable from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.ObjectStreamField from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.String$CaseInsensitiveComparator from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Comparator from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.Thread from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.Runnable from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/lang/Thread.registerNatives ... JNI]
[Registering JNI native method java/lang/Thread.start]
[Registering JNI native method java/lang/Thread.stop0]
[Registering JNI native method java/lang/Thread.isAlive]
[Registering JNI native method java/lang/Thread.suspend0]
[Registering JNI native method java/lang/Thread.resume0]
[Registering JNI native method java/lang/Thread.setPriority0]
[Registering JNI native method java/lang/Thread.yield]
[Registering JNI native method java/lang/Thread.sleep]
[Registering JNI native method java/lang/Thread.currentThread]
[Registering JNI native method java/lang/Thread.countStackFrames]
[Registering JNI native method java/lang/Thread.interrupt0]
[Registering JNI native method java/lang/Thread.isInterrupted]
[Loaded java.lang.ClassLoader from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Vector from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.AbstractList from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.AbstractCollection from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Collection from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.List from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.Cloneable from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Stack from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.ThreadDeath from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.Error from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.Exception from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.RuntimeException from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.StackOverflowError from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.VirtualMachineError from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.IOException from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.FileNotFoundException from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.reflect.Method from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.reflect.AccessibleObject from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.reflect.Member from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.reflect.ReflectPermission from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.security.BasicPermission from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.security.Permission from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.security.Guard from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/lang/Class.registerNatives ... JNI]
[Registering JNI native method java/lang/Class.getName]
[Registering JNI native method java/lang/Class.getSuperclass]
[Registering JNI native method java/lang/Class.getInterfaces]
[Registering JNI native method java/lang/Class.getClassLoader0]
[Registering JNI native method java/lang/Class.newInstance0]
[Registering JNI native method java/lang/Class.isInterface]
[Registering JNI native method java/lang/Class.getSigners]
[Registering JNI native method java/lang/Class.setSigners]
[Registering JNI native method java/lang/Class.isArray]
[Registering JNI native method java/lang/Class.isPrimitive]
[Registering JNI native method java/lang/Class.getComponentType]
[Registering JNI native method java/lang/Class.getModifiers]
[Registering JNI native method java/lang/Class.getFields0]
[Registering JNI native method java/lang/Class.getMethods0]
[Registering JNI native method java/lang/Class.getConstructors0]
[Registering JNI native method java/lang/Class.getField0]
[Registering JNI native method java/lang/Class.getMethod0]
[Registering JNI native method java/lang/Class.getConstructor0]
[Registering JNI native method java/lang/Class.getProtectionDomain0]
[Registering JNI native method java/lang/Class.setProtectionDomain0]
[Registering JNI native method java/lang/Class.getDeclaredClasses0]
[Registering JNI native method java/lang/Class.getDeclaringClass]
[Loaded java.io.ObjectStreamClass from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.ObjectStreamClass$ObjectStreamClassEntry from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.ref.SoftReference from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.ref.Reference from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/io/ObjectStreamClass.initNative ... JNI]
[Loaded java.io.ObjectStreamClass$CompareClassByName from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.ObjectStreamClass$CompareMemberByName from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.LinkageError from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.OutOfMemoryError from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.ThreadGroup from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded [C]
[Loaded java.lang.System from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/lang/System.registerNatives ... JNI]
[Registering JNI native method java/lang/System.currentTimeMillis]
[Registering JNI native method java/lang/System.arraycopy]
[Loaded java.security.AccessController from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/security/AccessController.getStackAccessControlContext ... JNI]
[Loaded java.security.AccessControlContext from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/security/AccessController.getInheritedAccessControlContext ... JNI]
[Loaded java.util.Collections from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Random from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Collections$EmptySet from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.AbstractSet from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Set from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Collections$EmptyList from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Collections$EmptyMap from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.AbstractMap from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Map from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Collections$ReverseComparator from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.InheritableThreadLocal from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.ThreadLocal from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.ref.Reference$Lock from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.ref.Reference$ReferenceHandler from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.ref.WeakReference from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.ref.FinalReference from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.ref.Finalizer from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.ref.ReferenceQueue from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.ref.ReferenceQueue$Null from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.ref.ReferenceQueue$Lock from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.ref.Finalizer$FinalizerThread from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.ref.PhantomReference from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Properties from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Hashtable from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Dictionary from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Hashtable$EmptyEnumerator from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Enumeration from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Hashtable$EmptyIterator from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Iterator from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.Float from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.Number from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/lang/Class.getPrimitiveClass ... JNI]
[Loaded java.util.Hashtable$Entry from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Map$Entry from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/lang/System.initProperties ... JNI]
[Loaded sun.io.ByteToCharConverter from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.io.Converters from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/lang/ClassLoader.getCallerClassLoader ... JNI]
[Dynamic-linking native method java/lang/Class.forName0 ... JNI]
[Loaded sun.security.action.GetPropertyAction from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.security.PrivilegedAction from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/security/AccessController.doPrivileged ... JNI]
[Loaded sun.io.CharacterEncoding from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.Locale from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.Character from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/lang/String.intern ... JNI]
[Loaded java.lang.StringBuffer from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.io.ByteToCharISO8859_1 from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.misc.Version from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.FileInputStream from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.InputStream from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/io/FileInputStream.initIDs ... JNI]
[Loaded java.io.FileDescriptor from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/io/FileDescriptor.initIDs ... JNI]
[Loaded java.io.FileOutputStream from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.OutputStream from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/io/FileOutputStream.initIDs ... JNI]
[Loaded java.io.BufferedInputStream from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.FilterInputStream from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/lang/System.setIn0 ... JNI]
[Loaded java.io.PrintStream from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.FilterOutputStream from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.BufferedOutputStream from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.OutputStreamWriter from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.Writer from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.io.CharToByteConverter from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.io.CharToByteISO8859_1 from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.BufferedWriter from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/lang/System.setOut0 ... JNI]
[Dynamic-linking native method java/lang/System.setErr0 ... JNI]
[Loaded sun.misc.Launcher from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.misc.Launcher$Factory from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.net.URLStreamHandlerFactory from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.misc.Launcher$1 from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.misc.Launcher$ExtClassLoader from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.net.URLClassLoader from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.security.SecureClassLoader from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.security.util.Debug from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.StringTokenizer from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.File from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.FileSystem from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/io/FileSystem.getFileSystem ... JNI]
[Loaded java.io.UnixFileSystem from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/io/UnixFileSystem.initIDs ... JNI]
[Loaded sun.misc.Launcher$2 from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.security.PrivilegedExceptionAction from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/security/AccessController.doPrivileged ... JNI]
[Dynamic-linking native method java/io/UnixFileSystem.list ... JNI]
[Loaded java.net.URL from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.HashSet from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.HashMap from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.HashMap$EmptyHashIterator from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.HashMap$Entry from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.misc.URLClassPath from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.ArrayList from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.net.www.protocol.jar.Handler from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.net.URLStreamHandler from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.misc.Launcher$AppClassLoader from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.misc.Launcher$3 from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/io/UnixFileSystem.canonicalize ... JNI]
[Dynamic-linking native method java/io/UnixFileSystem.getBooleanAttributes0 ... JNI]
[Loaded sun.net.www.protocol.file.Handler from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.Compiler from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/lang/Compiler.registerNatives ... JNI]
[Registering JNI native method java/lang/Compiler.compileClass]
[Registering JNI native method java/lang/Compiler.compileClasses]
[Registering JNI native method java/lang/Compiler.command]
[Registering JNI native method java/lang/Compiler.enable]
[Registering JNI native method java/lang/Compiler.disable]
[Loaded java.lang.Compiler$1 from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/lang/ClassLoader.findLoadedClass ... JNI]
[Dynamic-linking native method java/lang/ClassLoader.findBootstrapClass ... JNI]
Sucsessfuly loaded java/lang/String..........
[Loaded java.lang.ClassNotFoundException from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.net.URLClassLoader$1 from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/security/AccessController.doPrivileged ... JNI]
[Loaded java.util.EmptyStackException from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/lang/Throwable.fillInStackTrace ... JNI]
[Loaded java.security.PrivilegedActionException from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.misc.URLClassPath$2 from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.misc.URLClassPath$JarLoader from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.misc.URLClassPath$Loader from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.jar.JarFile from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.zip.ZipFile from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.zip.ZipConstants from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.security.action.LoadLibraryAction from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.Runtime from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/lang/System.getCallerClass ... JNI]
[Dynamic-linking native method java/lang/System.mapLibraryName ... JNI]
[Loaded java.lang.ClassLoader$4 from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.Boolean from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.ClassLoader$NativeLibrary from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/lang/ClassLoader$NativeLibrary.load ... JNI]
[Loaded native library: /usr/java/jdk1.3/jre/lib/i386/libzip.so]
[Dynamic-linking native method java/util/zip/ZipFile.initIDs ... [Dynamic-linking native method java/lang/ClassLoader$NativeLibrary.find ... JNI]
JNI]
[Dynamic-linking native method java/util/zip/ZipFile.open ... JNI]
[Dynamic-linking native method java/util/zip/ZipFile.getTotal ... JNI]
[Loaded sun.misc.JarIndex from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/util/zip/ZipFile.getEntry ... JNI]
[Loaded java.util.jar.JarEntry from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.zip.ZipEntry from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.misc.ExtensionDependency from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/util/zip/ZipEntry.initIDs ... JNI]
[Dynamic-linking native method java/util/zip/ZipEntry.initFields ... JNI]
[Dynamic-linking native method java/util/zip/ZipFile.freeEntry ... JNI]
[Loaded java.util.jar.JarFile$JarFileEntry from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.DataInputStream from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.DataInput from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.zip.ZipFile$ZipFileInputStream from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/util/zip/ZipFile.getCSize ... JNI]
[Dynamic-linking native method java/util/zip/ZipFile.getSize ... JNI]
[Dynamic-linking native method java/util/zip/ZipFile.getMethod ... JNI]
[Loaded java.util.zip.ZipFile$1 from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.zip.InflaterInputStream from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.zip.Inflater from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/util/zip/Inflater.initIDs ... JNI]
[Dynamic-linking native method java/util/zip/Inflater.init ... JNI]
[Dynamic-linking native method java/util/zip/Inflater.inflateBytes ... JNI]
[Dynamic-linking native method java/util/zip/ZipFile.read ... JNI]
[Loaded java.util.jar.Manifest from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.ByteArrayInputStream from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.jar.Attributes from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.jar.Manifest$FastInputStream from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.jar.Attributes$Name from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.jar.JarVerifier from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.ByteArrayOutputStream from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.net.www.ParseUtil from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.util.BitSet from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.misc.URLClassPath$4 from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.misc.Resource from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.Package from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/lang/Package.getSystemPackage0 ... JNI]
[Dynamic-linking native method java/util/jar/JarFile.getMetaInfEntryNames ... JNI]
[Loaded sun.security.util.ManifestEntryVerifier from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded
[Loaded sun.misc.BASE64Decoder from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.misc.CharacterDecoder from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/util/zip/Inflater.reset ... JNI]
[Loaded java.security.CodeSource from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.security.ProtectionDomain from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.security.Policy from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.security.Policy$1 from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.security.Security from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.security.Security$1 from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/io/FileInputStream.open ... JNI]
[Loaded java.io.BufferedReader from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.Reader from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.InputStreamReader from /usr/java/jdk1.3/jre/lib/rt.jar]
[Dynamic-linking native method java/io/FileInputStream.readBytes ... JNI]
[Dynamic-linking native method java/io/FileInputStream.available ... JNI]
[Dynamic-linking native method java/io/FileInputStream.close ... JNI]
[Loaded java.lang.Integer from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.security.Provider from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.security.provider.Sun from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.security.provider.Sun$1 from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded com.sun.rsajca.Provider from /usr/java/jdk1.3/jre/lib/sunrsasign.jar]
[Loaded com.sun.rsajca.Provider$1 from /usr/java/jdk1.3/jre/lib/sunrsasign.jar]
[Loaded sun.security.provider.PolicyFile from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.security.provider.PolicyPermissions from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.security.PermissionCollection from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.net.www.protocol.file.FileURLConnection from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.net.www.URLConnection from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.net.URLConnection from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.net.UnknownContentHandler from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.net.ContentHandler from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded sun.net.www.MessageHeader from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.FilePermission from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.io.FilePermission$1 from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.RuntimePermission from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.security.cert.Certificate from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded [Ljava.security.cert.Certificate;]
[Dynamic-linking native method java/lang/ClassLoader.defineClass0 ... JNI]
[Loaded rpic.client.cli.CLI]
Sucsessfuly loaded rpic/client/cli/CLI from ./client.jar..........
Loaded Find.Class rpic/client/cli/CLI
Starting GetStaticMethodID
[Loaded java.lang.NoSuchMethodError from /usr/java/jdk1.3/jre/lib/rt.jar]
[Loaded java.lang.IncompatibleClassChangeError from /usr/java/jdk1.3/jre/lib/rt.jar]
Exception in thread "main" [Dynamic-linking native method java/lang/Object.getClass ... JNI]
[Dynamic-linking native method java/io/FileOutputStream.writeBytes ... JNI]
java.lang.NoSuchMethodError: main
[Dynamic-linking native method java/lang/Throwable.printStackTrace0 ... JNI]
Error: GetStaticMethodID. Failed
[jason@mylinux ]$
I thought I would put the code here in its correct format for everyone.
- MAIN.CPP Actual Compilation Version --
/***************************************************************************
main.cpp - description
-
begin: Sun Jul 22 20:47:26 PDT 2001
copyright: (C) 2001 by Jason
email: jason@imsogoofy.com
***************************************************************************/
//Declare Preprocessor Includes
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#define PATH_SEPERATOR ':'
#include <copyright.txt.h>
#define classpath"-Djava.class.path=./client.jar";
#include <jni.h>
//******** Start Main Function *****************
int main(int argc, char *argv[])
{
char *usg = "\nUsage: ./myprogramname networkname <-norm/-auto> <[OPTIONAL_FILE]>\n";
char *copytext = Copyright_Text;
char *load = "rpic/client/cli/CLI";
char *lineopt = "\nError: Not enough options on command line\n";
char *clinusg = "\nError: Command line does not have the right options, see usage:";
//Declare JNI Enviroment Settings
JNIEnv *env;
JavaVM *jvm;
JavaVMInitArgs vm_args;
JavaVMOption options[2];
jclass jcls1;
jclass jcls2;
jobjectArray ja;
jmethodID mid;
options[0].optionString = classpath;
options[1].optionString= "-verbose:class,gc,jni";
vm_args.version = JNI_VERSION_1_2;
vm_args.options = options;
vm_args.nOptions = 2;
vm_args.ignoreUnrecognized = false;
if(argc < 3){
printf(lineopt);
printf(usg);
printf(copytext);
return 0;
}
else if(! ((strcmp(argv[2], "-auto")) || (strcmp(argv[2], "-norm"))) ) {
printf(clinusg);
printf(usg);
printf(copytext);
return 0;
}
else {
printf("\n\nTrying to Create JVM..................................................\n\n");
jint res = JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args);
if(! (res == JNI_OK) ){
printf("\nCould not initiate Java Virual Machine session. Verify Java Resource Environment (JRE 1.2.2 or higher) installation. \n\n");
return 0;
}
else{
jcls2 = env->FindClass("java/lang/Object"); /*Java Classpath*/
if (env->ExceptionOccurred())
env->ExceptionDescribe();
if(jcls2 != NULL)
printf("\n\n\n\n\nSucsessfuly loaded java/lang/String..........\n\n\n\n");
if(jcls2 == NULL){
printf("\n\nError: Could not load class java/lang/string.");
return 0;
}
jcls1 = env->FindClass(load); /*rpic/client/cli/CLI Classpath*/
if (env->ExceptionOccurred())
env->ExceptionDescribe();
if(jcls1 != NULL)
printf("\n\nSucsessfuly loaded %s from ./client.jar..........\n",load);
if(jcls1 == NULL){
printf("\n\nError: Could not load class%s from ./client.jar. Please ensure ./client.jar file is application in working directory\n",load);
return 0;
}
if(argc == 3)
ja = env->NewObjectArray(2,jcls2,NULL);
if (env->ExceptionOccurred()){
env->ExceptionDescribe();
printf("\nError: NewObjectArray for the command line options %s %s %s could not be set.\n\n",cargs0,cargs1,cargs2);
return 0;
}
else
ja = env->NewObjectArray(3,jcls2,NULL);
if (env->ExceptionOccurred()){
env->ExceptionDescribe();
printf("\nError: NewObjectArray for %s %s %scommand line options could not be set.\n\n",argv[0],argv[1],argv[2]);
return 0;
}
env->SetObjectArrayElement(ja, 0, env->NewStringUTF(argv[1]));
if (env->ExceptionOccurred()){
env->ExceptionDescribe();
printf("Error: SetObjectArrayElement 0 for %s could not be loaded.\n\n",argv[1]);
return 0;
}
env->SetObjectArrayElement(ja, 1, env->NewStringUTF(argv[2]));
if (env->ExceptionOccurred()){
env->ExceptionDescribe();
printf("Error: SetObjectArrayElement for %s could not be loaded. \n\n",argv[2]);
return 0;
}
if(jcls1 != NULL)
printf("\n\n\nLoaded Find.Class rpic/client/cli/CLI \n\n\n");
if(jcls1 == NULL) {
printf("\nCould not load %s:. Please ensure working directory contains client.jar.\n\n", load);
return 0;
}
printf("\n\nStarting GetStaticMethodID \n\n");
mid = env->GetStaticMethodID(jcls1, "main", "([Ljava/lang/String;)V");
if (env->ExceptionOccurred()){
env->ExceptionDescribe();
printf("Error: GetStaticMethodID.\n\n");
return 1;
}
env->CallStaticVoidMethod(jcls1,mid,ja);
if (env->ExceptionOccurred()){
env->ExceptionDescribe();
printf("Error: After setting JavaMethodID JVM failed with exception.\n\n");
return 0;
}
int *exit = 0;
pthread_exit(&exit);
return 1;
}
}
}