转换的Apache POI的.jar使用到.dll文件IKVM.Net(Convert Apache

2019-08-03 09:44发布

我想转换的Apache POI的.jar到.dll文件。 我用下面的脚本转换。 之后POI-3.8-20120326.dll:但是我得到很多的警告和错误选项无效-resource的。 下面是我使用的脚本。

ikvmc -target:library poi-ooxml-schemas-3.8-20120326.jar
ikvmc -target:library poi-3.8-20120326.jar
ikvmc -target:library -resource:poi-3.8-20120326.dll poi-scratchpad-3.8-20120326.jar
ikvmc -target:library -resource:poi-3.8-20120326.dll poi-ooxml-schemas-3.8-20120326.dll poi-scratchpad-3.8-20120326.dll poi-ooxml-3.8-20120326.jar
ikvmc -target:library -resource:poi-3.8-20120326.dll poi-ooxml-3.8-20120326.dll poi-excelant-3.8-20120326.jar

就是用这种IKVM.Net正确的方法。 如果没有什么是正确的脚本来做到这一点。

Answer 1:

我刚刚完成一个项目,我已经成功转换和利用IKVM 0.46.0.1使用的Apache POI 3.9。 转换后的组DLL预支持2007年和2007年发布的Microsoft Office格式。

先决条件:

下载POI 3.9和所有的JAR文件复制到一个目录下载IKVM(我使用0.46.0.1版)以下命令(在Windows 7中的命令行中,所有的POI JAR文件是相同的目录中运行)的伎俩对我来说:

ikvmc -target:library xmlbeans-2.3.0.jar
ikvmc -target:library stax-api-1.0.1.jar

ikvmc poi-ooxml-schemas-3.9-20121203.jar -target:library -reference:xmlbeans-2.3.0.dll -reference:stax-api-1.0.1.dll 


ikvmc -target:library log4j-1.2.13.jar
ikvmc -target:library commons-logging-1.1.jar
ikvmc -target:library commons-codec-1.5.jar

ikvmc poi-3.9-20121203.jar -target:library -reference:log4j-1.2.13.dll -reference:commons-logging-1.1.dll -reference:commons-codec-1.5.dll

ikvmc -target:library dom4j-1.6.1.jar

ikvmc poi-ooxml-3.9-20121203.jar -target:library -reference:poi-3.9-20121203.dll -reference:poi-ooxml-schemas-3.9-20121203.dll -reference:dom4j-1.6.1.dll -reference:xmlbeans-2.3.0.dll

希望能帮助到你。



Answer 2:

-resource的备选方案ikvmc编译器记录是这样的:

-resource:名称=路径包括路径作为Java资源命名的名称

所以这似乎表明-resource用于包括资源文件到编译,而不是(像你这样做)以前编译的DLL。

这种怀疑是由该怎么这个例子证实了resource选项中使用周围的蚂蚁包装的一个示例ikvmc

<resource name="/logs/logging.properties" path="${builddir}/logging.properties"/>

由于ikvmc是一个Java字节码到.NET的中间语言的编译器,它知道如何读的jar文件。 因此,而不是试图包括(之前生成的)的DLL到编译周期,你应该只指向ikvmc原来的jar文件。

要做到这一点最简单的方法是可能是将所有罐子一气呵成:

ikvmc -target:library poi-ooxml-schemas-3.8-20120326.jar poi-3.8-20120326.jar poi-scratchpad-3.8-20120326.jar ...


Answer 3:

你需要替换引用选项-resource。

但最好是编译它在一个步骤{}语法。 请参阅有关详细信息,维基 。 这可以是这样的:

ikvmc { -target:library poi-ooxml-schemas-3.8-20120326.jar } { -target:library poi-3.8-20120326.jar } { -target:library poi-scratchpad-3.8-20120326.jar } ....


Answer 4:

将所有的罐子一气呵成的坦率的回答解决了这个问题对我来说。 下面是我用POI 3.10完整的命令。 所有的罐子都需要在同一个目录下。 -out选项允许你指定输出DLL的名称,否则它从第一个罐子的名字。

ikvmc -target:library -out:poi-3.10.dll xmlbeans-2.3.0.jar stax-api-1.0.1.jar poi-ooxml-schemas-3.10-FINAL-20140208.jar log4j-1.2.13.jar commons-logging-1.1.jar commons-codec-1.5.jar poi-3.10-FINAL-20140208.jar dom4j-1.6.1.jar poi-ooxml-3.10-FINAL-20140208.jar 


文章来源: Convert Apache POI .jar to .dll using IKVM.Net