Jar包转成Dll的方式(带嵌套的jar也能做) (转)

研究很好几天,终于成功了。因为写了一个Java的项目,现在要求要改写成C#版本的。但是其中用到了svnkit,svnkit是java平台的。改写成C#的话,要使用SharpSVN,但是SharpSVN的API文档真的很不专业。看来看去还是svnkit比较好。所以打算将一些操作(上传,下载,删除,移动,检索树)写好之后,转成dll。于是开始了研究。

  首先遇到的问题是:jar包之间有依赖的话,转成dll。在运行过程中会出现找不到类的错误。最终找到了解决办法:有两种办法。

  1.使用fatjar将他们统一一键打包(依赖包可以存在新建的lib文件夹中),再使用

ikvmc -target:library 打包好的fatjar文件路径

  来将jar包转成dll。

  在新建的C#工程中添加引用(添加转好的dll),直接使用打包好的函数就行。(就像使用库函数)

  2.第二种方法是这样的:

  我举个例子说明一下:一个类名为:GetUserName(),将其导出为jar(BeDependent.jar)。再写一个类命名为InvokeGetUserName(),并且在InvokeGetUserName()中调用了GetUserName()。将InvokeGetUserName打包成另一个jar(ToDependent.jar)。

  接下来:先将没有依赖的jar包转成dll,这里指的就是BeDependent.jar。

ikvmc -target:library BeDependent.jar的路径

  会生成BeDependent.dll,然后将两个jar包合成:

ikvmc -target:library -reference:BeDependent.dll的路径 ToDependent.jar的路径

  生成ToDependent.dll。在新建的C#项目中加载引用后,直接在程序中直接调用InvokeGetUserName()即可。

注:但是在我合成svnkit的jar们的时候,出现了问题。还没有解决。

http://www.cnblogs.com/wangjiyuan/p/jar2dll.html

时间: 2024-10-23 20:39:48

Jar包转成Dll的方式(带嵌套的jar也能做) (转)的相关文章

Linux/OS X下将Jar包转换成可直接执行文件(不用java -jar)

在github上发现了这个脚本stub.sh: #!/bin/sh MYSELF=`which "$0" 2>/dev/null` [ $? -gt 0 -a -f "$0" ] && MYSELF="./$0" java=java if test -n "$JAVA_HOME"; then java="$JAVA_HOME/bin/java" fi exec "$java&

Java Service Wrapper将jar包安装成Windows服务

刚接触java,第一次使用Java开发windows服务,也是刚不久看了SSM框架 简直也是一头雾水,不过只要用心理解,其实很简单,下面有详细的步骤,包学包会 在windows上运行jar包,需要在工作目录下使用命令行运行jar包,这样会出现一个命令行窗口 而且这个命令行窗口有可能会不小心被关闭,且服务器启动后需要人为去点击开启 对于有些服务性的程序来说,我们需要将其部署为windows服务,在系统启动的时候自动启动 后来研究了两种方式: 1.使用 JavaService.exe 安装jar包

使用Java Service Wrapper将jar包安装成Windows服务

在windows上运行jar包,需要在工作目录下使用命令行运行jar包,这样会出现一个命令行窗口.而且这个命令行窗口有可能会不小心被关闭,且服务器启动后需要人为去点击开启. 对于有些服务性的程序来说,我们需要将其部署为windows服务,在系统启动的时候自动启动. 前面我使用了yajsw来进行,请参考我的博文:http://www.cnblogs.com/kxxx/p/6744309.html 但本次在另外一台服务器上进行处理时,安装了服务之后不能打开,服务每次都报找不到指定文件的错误,试了很久

通过JavaService 将java jar包注册成Windows 服务

一. 下载Javaservice ,把压缩文件解压,放到本地磁盘.下载地址:JavaService 64位 http://download.forge.ow2.org/javaservice/JavaService_2_0_10-amd64.zip JavaService 32位 http://download.forge.ow2.org/javaservice/JavaService-2.0.10.zip二. 准备jar包,查看jar 包Main函数所在的class三. 将jar包.解压后的J

转--Windows下将jar包封装成服务程序

http://www.cppblog.com/aurain/archive/2014/01/23/205534.aspx 1 准备 使用工具Procrun(http://commons.apache.org/proper/commons-daemon/procrun.html),下载地址(http://archive.apache.org/dist/commons/daemon/binaries/windows/),tomcat也是用其做服务程序.最新版的是commons-daemon-1.0.

Java-Maven项目引入UEditor图片上传组件jar包类库的5种方式

最近,硬是和百度的UEditor组件杠上了.自己的个人官网项目,很容易就搞定了,公司的项目,尼玛,各种问题.项目多了,环境复杂了,解决问题的方法也得不断调整. 项目用Maven管理jar包,用到了UEditor的jar包.项目原来直接使用UEditor的源码,编译部署后,正常.后来用的是jar包,放到WEB-INF目录的lib包下,默认情况下,Maven不会把lib包加入到Classpath中,需要手动加入.线上Maven自动打包,不会把UEditor.jar放到WEB_INF目录下,导致程序报

多个jar包合并成一个jar包的办法

步骤: 1.将多个JAR包使用压缩软件打开,并将全包名的类拷贝到一个临时目录地下. 2.cmd命令到该临时目录下,此时会有很多.class文件,其中需要带完整包路径 3.执行 jar -cvfM test.jar *.class . 其中 test.jar 为生成目标 jar包 *.class 为需要使用的.class文件 . 表示输出jar包目录为当前路径 4.此时生成的jar包就是多个jar包的合并包了

dx工具(android将jar包转成dex格式二进制jar包工具)

博客分类: android 时钟 dx工具二进制jar包 好吧,不得不承认这个工具真心难找,也不知道自己sdk里以前怎么就有了,还好给了师傅一份,现在重装系统从网上找这个工具都找不到. 将platform-tools.zip解压,将其内部资源拷贝到android sdk platform-tools目录下即可使用(window环境). 编译命令,cmd进入到android sdk platform-tools目录 dx --dex --output=target.jar origin.jar 上

自定义UDF时引用JAR包的另一种方式

背景: 写了一个UDF A.class放在A.jar里.A.class依赖B.jar中的B.class.B.class又依赖C.jar中的C.class. 使用add jar把A.jar.B.jar.C.jar把jar包加入classpath hive脚本里执行create temporary function XXX as "A.class"时抛出异常"C.class not found" 解决方法: 设置环境变量: export HIVE_AUX_JARS_PA