Felomeng翻译:IKVM的使用——将java程序转化为.net程序或类库

本文摘译自:IKVM.NET Home Page 

程序可以从ikvm-0.38.0.2(32位)ikvm-0.38.0.2(64位)下载。

 

IKVM.NET 二进行代码编译器(ikvmc.exe

 

ikvmc是将Java二进行代码转换成.NET动态链接器(.dll)和可执行文件(.exe)的工具。

·         语法

·         参数

·         几点说明

·         示例

语法(译者注:这个工具是在windows命令提示窗中使用的)

ikvmc [ options ] classOrJarfile [ classOrJarfile ... ]

参数

见下。

类文件(.class)或包文件(.jar

Java类或包文件的名字可以含有通配符(如*.class)。

 

参数

参数

说明

-out:输出文件

指定输出文件的文件名。文件名应含有扩展名.dll(参数-target设为library时)或.exe(参数-target设为exewinexe时)。一般地,缺省状态下ikvmc会根据输入文件名和-target参数来确定输出文件名。但是,如果在输入文件名中使用了通配符,那么就必须使用这个选项来指定输出文件名。

-assembly:程序集名称

指定生成的程序集名称。一般地,缺省状态下,程序集名就是输出文件名。

-target:目标类型

指定生成目标.exe.dll文件的类型,可以指定如下值:

  • exe——生成一个在windows命令窗口中运行的可执行程序。
  • winexe——生成一个带有界面的.exe应用程序。
  • library——生成一个动态链接库(.dll)文件。
  • module——生成一个.net模块。

Linux平台上,exewinexe两个参数是没有区别的。

-keyfile:主文件名。

主文件名用于指定结果程序集。

-version:M.m.b.r

指定程序集版本。

-main:类名

指定含有main函数的类的名称。缺省情况下,如果-target参数设置为exewinexeikvmc会搜寻合法的main函数,在找到的情况下会给用户提示。

-reference:指定类库位置

如果Java代码使用了.NET的编程接口(API),那么使用这个选项指定这些动态链接库(dll)。如果引用了不止一个类库文件,那么此选项可以多次使用。可以使用通配符(例如:c:/libs/*.dll)。

- recurse:filespec

处理当前文件夹下所有可与filespec匹配的文件。例如:- recurse: *.class

-nojni

对于非Java函数(native methods)不要生成用于非Java代码的Java接口(JNI)。

-resource:路径名

指定Java资源的引用路径名。

-exclude:文件名

要排除的类名列表。

-debug

将调试信息输出。注意:只有当.class文件含有调试信息(即使用javac-g参数编译)时才有用。

-srcpath:路径

指定源代码的位置。与-debug同时使用。程序会将包中类的搜索路径指定为此路径,并从中搜索类的源代码。

-Xtrace:名称

显示所有该指定名称的跟踪点。

-Xmethodtrace:函数名

指定的生成的函数名,将函数跟踪器(method trace)生成到此函数中。

几点说明

 

ikvmc利用Java类文件和包文件生成.NET程序集。它将输入文件中的Java二进行代码转化成.NET公共中间语言(CIL)。并利用它来生成:

  • .NET可执行文件(-target:exe or –target:winexe
  • .NET类库(-target:library
  • .NET模块(-target:module

Java程序一般由一系列的包文件组成。ikvmc可以将多个包文件(和类文件)转化成一个单独的.NET可执行程序或类库文件。例如,一个程序包含main.jarlib1.jarlib2.jar可以转化成一个单独的main.exe文件。

处理多个包文件时,如果有多个相同的类或源文件,ikvmc会使用第一个读入的版本,而忽略以后读到的。这时会产生警告信息。因此,包文件的顺序至关重要。

注意:

为了得到最佳结果,使用ikvmc转换Java程序时,请按照Java程序中类路径的顺序在,把要转换包的列表键入ikvmc的命令行。

 

示例

ikvmc myProg.jar

 

程序会自动在myprog.jar中查找main函数。如果找到了main函数,那么生成一个.exe文件;否则,生成一个.dll文件。

ikvmc -out:myapp.exe -main:org.anywhere.Main -recurse:bin/*.class lib/mylib.jar

 

处理bin文件夹中所有的.class文件以及lib文件夹中的mylib.jar文件。生成一个名为myapp.exe的可执行文件,并把org.anywhere.Main作为main函数。

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值