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设为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函数。

想做你的有缘人,可是我知道结果是惨淡的,但还是心存希望!

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

相关文章:

你感兴趣的文章:

标签云: