This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Invoking gcj compile program from "c"


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]