在.NET中调用Java的类

.NET不能直接调用Java的类,但IKVM.NET解决了这个问题。
IKVM.NET提供了两种方式调用java的类:
①把生成的jar包放置在程序根目录,然后通过创建URL实例的方式去调用类中的方法
②把生成的jar转换为dll,然后在程序中引用转化后的dll,之后就可以像调用c#类方法一样的方式来使用。官网说明文档

这里主要对第②种方式操作说明,步骤如下:

1、IKVM.NET官网上去下载程序包。地址:http://www.ikvm.net/download.html

我下载的版本为7.2.4630.5,文件包为:ikvmbin-7.2.4630.5.zip

2、解压包ikvmbin-7.2.4630.5.zip,然后打开cmd,通过cd定位到解压后的bin目录:~\ikvmbin-7.2.4630.5\ikvm-7.2.4630.5\bin

在.NET中调用Java的类

将需要转化为dll的jar包拷贝到~\ikvmbin-7.2.4630.5\ikvm-7.2.4630.5\bin目录下

执行ikvmc命令,将jar包转化为dll程序集。命令语句如下:

ikvmc -target:library EncryptUtil.jar

其中EncryptUtil.jar 为待转换为dll的jar包

在.NET中调用Java的类

出现 note IKVMC0002: Output file is ” EncryptUtil.dll” 代表转换成功。可以在~\ikvmbin-7.2.4630.5\ikvm-7.2.4630.5\bin目录找到转换后新生成的文件EncryptUtil.dll

3、在.NET程序中引用生成的EncryptUtil.dll文件和~\ikvmbin-7.2.4630.5\ikvm-7.2.4630.5\bin目录下的IKVM.OpenJDK.Core.dll文件,然后就可以像使用C#类一样的方式来使用EncryptUtil类了

Console.Write(EncryptUtil.base64Decoder("测试"));

调用EncryptUtil的静态方法base64Decoder。

在.NET中调用Java的类

补充说明:所要转为为dll的jar包,应该包含完整的依赖引用。

Original: https://www.cnblogs.com/senyier/p/8886652.html
Author: 儿时精神
Title: 在.NET中调用Java的类

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/539600/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【Java】【52】处理报错:java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList

    前言:项目需求:将一个逗号分隔的字符串转换成list,然后将该list克隆后赋值给一个新的newList。执行时出现了标题中的报错 正文: 原代码 参考博客: Original: …

    Java 2023年5月29日
    066
  • Markdown基础语法练习

    Markdown快速入门 前言 10分钟熟悉Markdown语法,练习工具本地typora,在线工具博客园Editor.md编辑器 1 代码块实现 // 只需要 代码语言 就可以生…

    Java 2023年6月9日
    070
  • 方法的深度理解

    权限修饰符 返回值类型 类名(行参列表 )throws 异常的类型{ //方法体 约定俗称:子类中叫重写的方法,父类中叫被重写的方法。 ①子类重写的方法名和行参列表和父类被重写的方…

    Java 2023年6月7日
    086
  • 聊聊支付流程的设计与实现逻辑

    新手打怵老手头疼的业务; 一、业务背景 通常在业务体系中,都会或多或少的涉及到支付相关的功能;对于一些经验欠缺同学来说,最紧张的就是面对这类支付结算的逻辑,因为流程中的任何细节问题…

    Java 2023年6月15日
    098
  • Docker RabbitMQ 镜像集群

    环境搭建: Docker启动3个RabbitMQ,第一个MQ为主节点,同时指定 RABBITMQ_ERLANG_COOKIE。 后面两个镜像为第一个MQ的节点,RABBITMQ_E…

    Java 2023年6月9日
    080
  • Java学习-动手动脑2

    public void println() { newLine(); } /** * Prints a boolean and then terminate the line. T…

    Java 2023年6月9日
    074
  • LeetCode随缘刷题之最长回文子串

    这一题我用的相对比较笨的方法。相对于大佬们用的动态规划法,比较复杂。但却更容易理解,我主要是通过记录下标来确定最长回文串的。 package leetcode.day_12_06;…

    Java 2023年6月7日
    081
  • java入门

    1.基础语法 基本数据类型 整数类型 浮点类型 字符类型 布尔类型 类型转换 运算符 算术运算符 关系运算符 逻辑运算符 赋值运算符 三元运算符 字符串运算符 位运算符 分支 if…

    Java 2023年6月5日
    077
  • 通用查询解决方案

    package cn.com.fmsh.nfcos.sapo.biz; import java.util.*; import java.util.regex.*; import j…

    Java 2023年6月9日
    079
  • NGINX中root和alias的区别

    nginx指定文件路径有两种方式root和alias。主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。 locati…

    Java 2023年5月30日
    078
  • 阿里云ECS部署Redis主备哨兵集群遇到的问题

    一、部署 二、遇到的问题 1、bind公网IP地址时,会出现异常:【Cannot assign requested address】 原因:这里无法bind公网IP地址,是因为EC…

    Java 2023年6月5日
    068
  • 【系列文章】Maven 源码解析:依赖调解是如何实现的?

    系列文章目录(请务必按照顺序阅读): 给自己的公众号打个广告 欢迎大家关注我的公众号:xiaoxi666,一起来玩一起学! Original: https://www.cnblog…

    Java 2023年6月16日
    074
  • 微服务入门之config+bus

    一、前言 1.1、分布式面临的问题 微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行…

    Java 2023年6月9日
    093
  • 搭建maven私服

    1.1 简介: Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件(artifact),但这通常不是一个好的做法,你应该在本地架…

    Java 2023年6月5日
    089
  • 从Go编程看IO多路复用Epoll

    IO多路复用使得一个线程就可就可以处理多个网络连接,无需要创建多个线程来处理多个socket连接,减少不必要的资源开销,但是Select还是Poll、Epoll模式都有着不同的区别…

    Java 2023年6月16日
    079
  • Spring使用外部属性文件

    一、在 Spring Config 文件中配置 Bean 时,有时候需要在 Bean 的配置里添加系统部署的细节信息, 如文件路径,数据源配置信息。而这些部署细节实际上需要在配置文…

    Java 2023年5月30日
    091
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球