您的位置:首页 > Web前端

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

2009-04-10 20:46 183 查看
本文摘译自: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设为exe或winexe时)。一般地,缺省状态下ikvmc会根据输入文件名和-target参数来确定输出文件名。但是,如果在输入文件名中使用了通配符,那么就必须使用这个选项来指定输出文件名。
-assembly:程序集名称
指定生成的程序集名称。一般地,缺省状态下,程序集名就是输出文件名。
-target:目标类型
指定生成目标.exe或.dll文件的类型,可以指定如下值:

exe——生成一个在windows命令窗口中运行的可执行程序。

winexe——生成一个带有界面的.exe应用程序。

library——生成一个动态链接库(.dll)文件。

module——生成一个.net模块。

在Linux平台上,exe与winexe两个参数是没有区别的。
-keyfile:主文件名。
主文件名用于指定结果程序集。
-version:M.m.b.r
指定程序集版本。
-main:类名
指定含有main函数的类的名称。缺省情况下,如果-target参数设置为exe或winexe,ikvmc会搜寻合法的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.jar、lib1.jar和lib2.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函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: