Re: Class.forName and csharp classes

Jeroen Frijters <[email protected]> Fri, 17 Feb 2017 16:50:01 +0000
Newsgroups gmane.comp.java.ikvm.devel
Message-ID <AM2PR08MB00514745C505B88F40D7025BA25D0@AM2PR08MB0051.eurprd08.prod.outlook.com>
Hi Martin,

The exe is automatically part of the boot class loader (when it is run in the normal way). I don't know what else could be the problem.

Regards,
Jeroen

> -----Original Message-----
> From: Martin Gerhardy [mailto:[email protected]]
> Sent: Friday, February 17, 2017 16:41
> To: Jeroen Frijters <[email protected]>; ikvm-
> [email protected]
> Subject: AW: Class.forName and csharp classes
> 
> Hi Jeroen
> 
> maybe I am misisng something, but the csharp class is part of the exe,
> the dll (converted jar) is trying to load a class from the exe - do I
> have to add the exe to the classloader in the csharp application? Isn't
> that implicitly the case? Or do I have to create another dll for my
> csharp stuff and just reference it from a minimal exe?
> 
> Can you give an example on how to do that? Thanks again for helping me.
> 
> Regards
> Martin
> ________________________________________
> Von: Jeroen Frijters [[email protected]]
> Gesendet: Freitag, 17. Februar 2017 16:19
> An: Martin Gerhardy; [email protected]
> Betreff: RE: Class.forName and csharp classes
> 
> Hi Martin,
> 
> In that case it is probably simply a class loader issue. The class
> loader you use for Class.forName() must be able to see the assembly. The
> easiest solution is to add the assembly to the boot class loader with
> the ikvm.runtime.Startup.addBootClassPathAssembly() method.
> 
> Regards,
> Jeroen
> 
> > -----Original Message-----
> > From: Martin Gerhardy [mailto:[email protected]]
> > Sent: Friday, February 17, 2017 16:08
> > To: Jeroen Frijters <[email protected]>; ikvm-
> > [email protected]
> > Subject: AW: Class.forName and csharp classes
> >
> > Hi Jeroen,
> >
> > thanks for the answer - I tried both:
> >
> > ---------------------------
> > using System.Diagnostics;
> > using System;
> >
> > [assembly: IKVM.Attributes.NoPackagePrefixAttribute]
> > namespace foo
> > {
> >       class Foo
> >       {
> >               public Foo()
> >               {
> >               }
> >       }
> >
> >       class MainClass
> >       {
> >               public static void Main (string[] args)
> >               {
> >                       Console.WriteLine("starting up...");
> >                       Launcher.main("foo.Foo");
> >               }
> >       }
> > }
> > ---------------------------
> >
> >
> > package foo;
> >
> > public class Launcher {
> >       public static void main(final String name) {
> >               try {
> >                       System.err.println("Starting up and trying to
> > load " + name);
> >                       final Class<?> forName = Class.forName("cli." +
> name);
> >                       System.out.println("Finished loading " +
> forName);
> >               } catch (final ClassNotFoundException e) {
> >                       e.printStackTrace();
> >               }
> >       }
> > }
> >
> > ---------------------------
> >
> > Neither works - neither the additional cli. namespace prefix nor
> > adding the attribute (Not sure if I did that one correctly)
> >
> > Compiling with the commands:
> >       ikvmc -classloader:ikvm.runtime.ClassPathAssemblyClassLoader -
> > assemblyattributes:$(BIN)/AssemblyInfo.class -target:library $<
> >       mcs -target:exe -main:foo.MainClass -
> > r:System.dll,IKVM.Runtime.dll,IKVM.OpenJDK.Core.dll,$(NAME).dll -
> > out:proof-of-concept.exe GuiceRepro.cs AssemblyInfo.cs
> >
> >
> >
> > Regards
> > Martin
> >
> > ________________________________________
> > Von: Jeroen Frijters [[email protected]]
> > Gesendet: Freitag, 17. Februar 2017 14:50
> > An: Martin Gerhardy; [email protected]
> > Betreff: RE: Class.forName and csharp classes
> >
> > Hi Martin,
> >
> > Did you take into account that the C# classes get a "cli." prefix in
> > Java (by default)?
> >
> > You can apply the IKVM.Attributes.NoPackagePrefixAttribute to the
> > class or assembly to disable this.
> >
> > Regards,
> > Jeroen
> >
> > > -----Original Message-----
> > > From: Martin Gerhardy [mailto:[email protected]]
> > > Sent: Wednesday, February 15, 2017 11:34
> > > To: [email protected]
> > > Subject: [Ikvm-developers] Class.forName and csharp classes
> > >
> > > Hi,
> > >
> > > we are converting a deserialization jar via ikvm into a dll and bind
> > > a csharp class via guice to some of the serialized classes. The java
> > > code contains a call for Class.forName for that class. As our
> > > injected class is a csharp class, this doesn't work. Is there any
> > > way to work around this? (In the sense the Class.forName also finds
> > > csharp
> > > classes?)
> > >
> > > Regards
> > > Martin


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot