This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
Re: Invoking gcj compile program from "c"
- From: Andrew Haley <aph at redhat dot com>
- To: Vaijayanthi Mala Suresh <vaijayanthimalas at gmail dot com>
- Cc: java at gcc dot gnu dot org
- Date: Wed, 27 May 2009 08:56:35 +0100
- Subject: Re: Invoking gcj compile program from "c"
- References: <6f1633170905270029r1f91bbf8xd61fd3c4bc3ea065@mail.gmail.com>
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.