Files
JCIL/CLI/Program.cs
T
2026-05-05 22:41:02 +02:00

38 lines
1.3 KiB
C#
Executable File

using System.Reflection;
using System.Reflection.Emit;
using JCIL.Java.Class;
namespace JCIL.CLI;
public class Program
{
public static void Main(string[] args)
{
var now = DateTime.Now;
var loader = new TypeLoader();
loader.AddPath(Environment.CurrentDirectory);
loader.AddPath("../extracted_java_classes/java.base/");
var javaClass = loader.LoadClass("Main".AsMemory());
Console.WriteLine($"Load time: {(DateTime.Now - now).TotalMilliseconds}ms");
var builder = new AssemblyBuilder(new AssemblyName("Test"), false);
var dotnetClass = builder.Build(javaClass);
try
{
builder.ForceBuildMethod(javaClass.Methods[1]);
}
catch (InvalidDataException e)
{
Console.WriteLine($"Compiled methods: {builder.CompiledMethods}/{builder.TotalMethods}");
Console.ForegroundColor = ConsoleColor.Red;
Console.Error.WriteLine(e.Message);
Environment.Exit(1);
}
finally
{
Console.WriteLine($"Compiled methods: {builder.CompiledMethods}/{builder.TotalMethods}");
var assembly = (PersistedAssemblyBuilder)builder.Assembly;
assembly.Save("out.dll");
}
}
}