Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

502
Visualizações
¿Cómo usar un Java .dll en C# .NET Core 6?

Situación inicial

Hoy hice una pequeña prueba para mi proyecto: el objetivo: implementar archivos .jar en un proyecto de C# como .dll . Mi archivo .java / .jar actual tiene el siguiente aspecto.

 package ws; public class Adding { public int Add(int a, int b) { return a + b; } }

Convertí con éxito lo anterior en un .dll con IKVM (Versión: 7.5.0.2).

Ahora quiero hacer referencia a este .dll en mi proyecto C# y llamar al método Add(int a, int b) . Ya agregué la referencia así:

ingrese la descripción de la imagen aquí

De todos modos, no puedo llamar al método porque el compilador no puede encontrar la referencia .dll .

 using Adding; // <= Compiler Error CS0246 (Can't find the reference) Console.WriteLine(Add(1, 2));

¿Alguien sabe cómo podría lograr esto? Agradezco mucho cualquier tipo de ayuda, saludos!


Edición 1: Descompilación

He descompilado el .dll , como se exige en los comentarios, con ILSpy (Versión: ILSpy 7.2), lo que da como resultado el siguiente resultado.

 // C:\Users\maikh\Desktop\Adding.dll // Adding, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null // Global type: <Module> // Architecture: AnyCPU (64-bit preferred) // Runtime: v4.0.30319 // Hash algorithm: SHA1 using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using IKVM.Attributes; [assembly: Debuggable(true, false)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: SourceFile(null)] [module: JavaModule(Jars = new string[] { "Adding.jar" })] [module: PackageList(new string[] { })]

También encontré algunas referencias, mientras descompilaba el .dll . No sé si es importante mencionar esto, pero lo proporcionaré de todos modos.

 // Detected TargetFramework-Id: .NETFramework,Version=v4.0 // Detected RuntimePack: Microsoft.NETCore.App // Referenced assemblies (in metadata order): // IKVM.Runtime, Version=7.5.0.2, Culture=neutral, PublicKeyToken=00d957d768bec828 // Assembly reference loading information: // There were some problems during assembly reference load, see below for more information! // Error: Could not find reference: IKVM.Runtime, Version=7.5.0.2, Culture=neutral, PublicKeyToken=00d957d768bec828 // mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 // Assembly reference loading information: // Info: Success - Found in Assembly List // Assembly load log including transitive references: // IKVM.Runtime, Version=7.5.0.2, Culture=neutral, PublicKeyToken=00d957d768bec828 // Error: Could not find reference: IKVM.Runtime, Version=7.5.0.2, Culture=neutral, PublicKeyToken=00d957d768bec828 // mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 // Info: Success - Found in Assembly List

Edición 2: Descompilación de V2

Logré agregar la referencia faltante IKVM.Runtime . Sin embargo, no puedo encontrar ninguna información sobre el espacio de nombres, la clase o el método.

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Dado que su clase Java está en el paquete ws , debería using ws en su código C#:

 using ws; Adding adding = new Adding(); Console.WriteLine(adding.Add(1, 2));

Y si desea llamar al método Add de forma estática, declárelo static en Java:

 package ws; public class Adding { public static int Add(int a, int b) { return a + b; } }
 using ws; Console.WriteLine(Adding.Add(1, 2));
over 4 years ago · Santiago Trujillo Relatório

0

En primer lugar, está utilizando una clase como espacio de nombres y probablemente no sea correcto. Su llamada de método probablemente debería verse así:

 var adder = new Adding(); Console.WriteLine(adder.Add(1, 2));

Si eso no funciona, inspeccionaría el dll producido para verificar que sea un .net dll conforme. Eso también debería mostrar los espacios de nombres, los nombres de las clases y otra información. Un descompilador como dotPeek o ilSpy puede mostrar la misma información en un formato que puede ser más fácil de leer.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda