[Mono-list] Java Problem

mono-list.1.tracyanne at spamgourmet.com mono-list.1.tracyanne at spamgourmet.com
Wed Sep 28 18:35:02 EDT 2005


Thanks Jonathon, I'll give that a whirl.

Regards

Tracy Barlow


> Date: Wed, 28 Sep 2005 06:58:10 -0400
> From: Jonathan Pryor <jonpryor at vt.edu>
> Subject: Re: [Mono-list] Java Problem
> To: mono-list.1.tracyanne at spamgourmet.com
> Cc: mono-list at lists.ximian.com
> Message-ID: <1127905092.3001.40.camel at localhost.localdomain>
> Content-Type: text/plain
> 
> On Wed, 2005-09-28 at 13:16 +1000, mono-list.1.tracyanne at spamgourmet.com
> wrote:
> > When I attempt to create a Java project and compile it, I get the
> > following error.
> > 
> > [Task:File=, Line=-1, Column=-1, Type=Error, Description=Error: file not
> > found: *.class
> > 
> > This is the code generated by Glade# Java project
> > 
> > /*
> >  * application.java
> >  *
> >  * created on 28/09/2005 at 11:47
> >  */
> > import cli.Gnome.*;
> > import cli.Gtk.*;
> > 
> > public class application {
> >     public static void main (String[] args) {
> >         Program p = new Program ("Name", "0.0", Modules.UI, args);
> > 		App app = new App ("Hello Mono with Java#", "0.0");
> > 		Button b = new Button ("Click me");
> > 		app.Add (b);
> > 		app.ShowAll ();
> > 		p.Run ();
> >     }
> > }
> 
> I don't know what you need to do for MonoDevelop, but for the command
> line you'd need to do this:
> 
> 	# Create .jar stubs for javac/gcj to find for managed libraries.
> 	$ mono ikvmstub.exe /usr/lib/mono/1.0/mscorlib.dll
> 	$ for f in /usr/lib/mono/gtk-sharp/*.dll ; do \
> 		mono ikvmstub.exe $f ; 
> 	  done
> 
> 	# Edit application.java:
> 	# (1) Properties are just methods, and Java requires that you 
> 	#     invoke the underlying methods
> 	# (2) That Program constructor doesn't exist
> 	# So replace:
> 	#    Program p = new Program ("Name", "0.0", Modules.UI, args);
> 	# with:
> 	#    Program p = new Program ("Name", "0.0", Modules.get_UI(), args, null);
> 
> 	# Compile application.java.  I'm using FC4's GCJ:
> 	$ export MY_CP=gtk-sharp.jar:gnome-sharp.jar:glib-sharp.jar:atk-sharp.jar:mscorlib.jar
> 	$ gcj -C --CLASSPATH=$MY_CP application.java
> 
> 	# Run the program, either using (1) ikvm.exe, or 
> 	# (2) ikvmc.exe + mono
> 
> 	# (1) ikvm.exe:
> 	$ mono ikvm.exe -cp $MY_CP application
> 
> 	# (2) ikvmc.exe + mono
> 	# ikvmc.exe makes a .exe from a .class which mono can run.
> 	$ mono ikvmc.exe `pkg-config --libs gtk-sharp gnome-sharp` \
> 	  application.class
> 	$ mono application.exe
> 
> And that's it.  That and watching one computer halt and catch fire when
> running application.exe, and another computer generate a
> java.lang.NullPointerException when running application.class (methinks
> passing `null' as the final Program parameter might not be a good idea,
> but I don't care enough to actually debug further).
> 
> Running the sample Java+Gtk# demo from
> http://tirania.org/blog/texts/gtkjava.html works correctly.
> 
> One final word of warning: Mono+IKVM uses GNU Classpath for the Java API
> implementation.  It cannot and will not use your JRE-provided libraries.
> Consequently, you *can* compile your code with the JRE compiler, but
> your code may not *run* under IKVM, as you may be using unimplemented
> portions of GNU Classpath.  I'd suggest using gcj when compiling since
> it also uses GNU Classpath, but that's just me.
> Be careful. :-)
> 
> See also http://www.ikvm.net, the IKVM tutorial, and #mono on IRC.
> 
>  - Jon



More information about the Mono-list mailing list