Re: Class.forName and csharp classes

Martin Gerhardy <[email protected]> Fri, 17 Feb 2017 15:07:35 +0000
Newsgroups gmane.comp.java.ikvm.devel
Message-ID <0598D786697B0A42AAEE934493816053406A3758@srv024038.bigpoint.local>
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