Invoking gcj compile program from "c"

Vaijayanthi Mala Suresh vaijayanthimalas@gmail.com
Wed May 27 08:26:00 GMT 2009


Hi Andrew,

I didn't do any linking explicitly.  I was assuming that if the
library is placed under /lib folder it will get loaded automatically.
Later I tried the following before invoking the FindClass()

	void *h = dlopen("/lib/libHelloWorld.so", RTLD_LAZY);
	if (h == NULL)
	{	
	     const char *msg = dlerror();		
		 printf("VMJ Error %s\n",msg);
    }

It returns me an error "File Not Found"

Thanks
Mala

On Wed, May 27, 2009 at 1:26 PM, Andrew Haley <aph@redhat.com> wrote:
> Vaijayanthi Mala Suresh wrote:
>> I have written an HelloWorld.java as given below
>>
>> public class HelloWorld {
>>    public HelloWorld()
>>    {
>>      System.out.println("Hello from constructor");
>>    }
>>    public void printline()
>>    {
>>      System.out.println("Hello from printline");
>>    }
>>    public static void main(String [] args) {
>>      System.out.println("Hello from main");
>>      HelloWorld ht = new HelloWorld();
>>      ht.printline();
>>    }
>>  }
>>
>> I have compiled it with gcj as given belwo
>> gcj -c HelloWorld.java
>> gcj -shared HelloWorld.o -o libHelloWorld.so
>>
>> Copied the .so file into the folder as per LD_LIBRARY_PATH.
>>
>> I have a cstartup.c which does the JVM Initialization and has to do a
>> FindClass() as given below
>>
>> res = JNI_CreateJavaVM(&jvm,&env,&vm_args);
>> if (res < 0)
>> {
>>       fprintf(stderr, "Can't create Java VM\n");
>> exit(1);
>>     }
>>
>>
>> cls = (*env)->FindClass(env, "HelloWorld");
>> if (cls == 0)
>> {
>>        fprintf(stderr, "Can't find HelloWorld class\n");
>>        exit(1);
>>     }
>>
>> This prints me "Can't find HelloWorld class"
>>
>> Can someone help me in this regard?
>
> I'm guessing you haven't linked everything correctly.  However, you haven't
> shown us how cstartup.c is linked against libHelloWorld.so, so it's hard to
> say.  Please give a *complete* test case, with all code and all the
> commands you used to build it.
>
> Andrew.
>
>



More information about the Java mailing list