﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-GooooWei-随笔分类-Java和C#</title><link>http://www.blogjava.net/goooowei/category/40326.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 17 Jun 2009 03:52:10 GMT</lastBuildDate><pubDate>Wed, 17 Jun 2009 03:52:10 GMT</pubDate><ttl>60</ttl><item><title>在C#中调用Java代码</title><link>http://www.blogjava.net/goooowei/archive/2009/06/12/281912.html</link><dc:creator>GooooWei</dc:creator><author>GooooWei</author><pubDate>Fri, 12 Jun 2009 12:59:00 GMT</pubDate><guid>http://www.blogjava.net/goooowei/archive/2009/06/12/281912.html</guid><wfw:comment>http://www.blogjava.net/goooowei/comments/281912.html</wfw:comment><comments>http://www.blogjava.net/goooowei/archive/2009/06/12/281912.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/goooowei/comments/commentRss/281912.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/goooowei/services/trackbacks/281912.html</trackback:ping><description><![CDATA[<ol>
    <li>到<a href="http://www.ikvm.net/download.html" target="_blank">IKVM官方网站</a>下载IKVM需要的组件
    <li style="list-style-type: none">
    <ol>
        <li>ikvm-0.40.0.1.zip
        <li>ikvmbin-0.40.0.1.zip
        <li>openjdk6-b12-stripped.zip </li>
    </ol>
    <li>解压ikvm-0.40.0.1.zip,并将%IKVM_HOME%\bin添加到path中。此处的%IKVM_HOME%是指解压后ikvm的主目录。
    <li>到<a href="http://packages.debian.org/squeeze/all/ikvm/download" target="_blank">Debian IKVM</a>下载<u>IKVM.OpenJDK.ClassLibrary.dll</u>。
    <li style="list-style-type: none">
    <ol>
        <li>或者到<a href="http://www.rayfile.com/files/db9f0bd7-5437-11de-83c6-0019d11a795f/" target="_blank">rayfile</a>去下载data.tar.gz。这个文件可以直接用winrar解压。
        <li>你需要下载一个简单的工具<a href="http://download.csdn.net/source/508193" target="_blank">undeb</a>去解压.deb文件。
        <li style="list-style-type: none">
        <ol>
            <li>也可以到<a href="http://www.rayfile.com/files/df049b40-5439-11de-a1fe-0019d11a795f/" target="_blank">rayfile</a>下载 </li>
        </ol>
        </li>
    </ol>
    <li>解压ikvm_0.38.0.2+dfsg-2_all.deb文件。
    <li>新建一个Java文件
    <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.helloikvm.simple;<br />
    <img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
    <img id="Codehighlighter1_63_248_Open_Image" onclick="this.style.display='none'; Codehighlighter1_63_248_Open_Text.style.display='none'; Codehighlighter1_63_248_Closed_Image.style.display='inline'; Codehighlighter1_63_248_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_63_248_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_63_248_Closed_Text.style.display='none'; Codehighlighter1_63_248_Open_Image.style.display='inline'; Codehighlighter1_63_248_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;SimpleReturnString&nbsp;</span><span id="Codehighlighter1_63_248_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_63_248_Open_Text"><span style="color: #000000">{&nbsp;<br />
    <img id="Codehighlighter1_99_136_Open_Image" onclick="this.style.display='none'; Codehighlighter1_99_136_Open_Text.style.display='none'; Codehighlighter1_99_136_Closed_Image.style.display='inline'; Codehighlighter1_99_136_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_99_136_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_99_136_Closed_Text.style.display='none'; Codehighlighter1_99_136_Open_Image.style.display='inline'; Codehighlighter1_99_136_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;returnString()&nbsp;</span><span id="Codehighlighter1_99_136_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_99_136_Open_Text"><span style="color: #000000">{<br />
    <img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Hello,&nbsp;IKVM!</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
    <img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
    <img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
    <img id="Codehighlighter1_190_246_Open_Image" onclick="this.style.display='none'; Codehighlighter1_190_246_Open_Text.style.display='none'; Codehighlighter1_190_246_Closed_Image.style.display='inline'; Codehighlighter1_190_246_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_190_246_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_190_246_Closed_Text.style.display='none'; Codehighlighter1_190_246_Open_Image.style.display='inline'; Codehighlighter1_190_246_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;throwException()&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception&nbsp;</span><span id="Codehighlighter1_190_246_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_190_246_Open_Text"><span style="color: #000000">{<br />
    <img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Exception(</span><span style="color: #000000">"</span><span style="color: #000000">Hello,&nbsp;Exception!</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
    <img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
    <img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;</span></div>
    <li>编译SimpleReturnString文件，然后将其打包成一个jar文件，例如IKVM.jar.
    <li>使用ikvmc -out:IKVM.dll IKVM.jar。你现在应该在IKVM的目录下面看到一个IKVM.dll文件。
    <li>新建一个C#.NET项目，首先添加一下必须的DLLs
    <li style="list-style-type: none">
    <ol>
        <li>%IKVM_HOME%\bin\IKVM.OpenJDK.Core.dll
        <li>%IKVM_HOME%\bin\IKVM.Runtime.dll
        <li>%IKVM_HOME%\bin\IKVM.Runtime.JNI.dll
        <li>IKVM.OpenJDK.ClassLibrary.dll[这的DLL在ikvm_0.38.0.2+dfsg-2_all.deb\usr\lib\cli文件夹中。或者也可在data.tar.gz中的usr\lib\cli中找到。参看第三步和第四步] </li>
    </ol>
    <li>添加第10步生成的IKVM.dll到C#.NET项目中，然后using %package_name%就可以实现对Java的调用。
    <li>编写C#代码
    <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #008000">//</span><span style="color: #008000">&nbsp;import&nbsp;java&nbsp;package&nbsp;</span><span style="color: #008000"><br />
    <img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
    <img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;com.helloikvm.simple;&nbsp;<br />
    <img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
    <img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;IKVMTest<br />
    <img id="Codehighlighter1_74_530_Open_Image" onclick="this.style.display='none'; Codehighlighter1_74_530_Open_Text.style.display='none'; Codehighlighter1_74_530_Closed_Image.style.display='inline'; Codehighlighter1_74_530_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_74_530_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_74_530_Closed_Text.style.display='none'; Codehighlighter1_74_530_Open_Image.style.display='inline'; Codehighlighter1_74_530_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_74_530_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_74_530_Open_Text"><span style="color: #000000">{<br />
    <img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;partial&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Form1&nbsp;:&nbsp;Form<br />
    <img id="Codehighlighter1_118_528_Open_Image" onclick="this.style.display='none'; Codehighlighter1_118_528_Open_Text.style.display='none'; Codehighlighter1_118_528_Closed_Image.style.display='inline'; Codehighlighter1_118_528_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_118_528_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_118_528_Closed_Text.style.display='none'; Codehighlighter1_118_528_Open_Image.style.display='inline'; Codehighlighter1_118_528_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_118_528_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_118_528_Open_Text"><span style="color: #000000">{<br />
    <img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Form1()<br />
    <img id="Codehighlighter1_151_196_Open_Image" onclick="this.style.display='none'; Codehighlighter1_151_196_Open_Text.style.display='none'; Codehighlighter1_151_196_Closed_Image.style.display='inline'; Codehighlighter1_151_196_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_151_196_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_151_196_Closed_Text.style.display='none'; Codehighlighter1_151_196_Open_Image.style.display='inline'; Codehighlighter1_151_196_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_151_196_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_151_196_Open_Text"><span style="color: #000000">{<br />
    <img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InitializeComponent();<br />
    <img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
    <img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;btnTest_Click(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br />
    <img id="Codehighlighter1_270_522_Open_Image" onclick="this.style.display='none'; Codehighlighter1_270_522_Open_Text.style.display='none'; Codehighlighter1_270_522_Closed_Image.style.display='inline'; Codehighlighter1_270_522_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_270_522_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_270_522_Closed_Text.style.display='none'; Codehighlighter1_270_522_Open_Image.style.display='inline'; Codehighlighter1_270_522_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_270_522_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_270_522_Open_Text"><span style="color: #000000">{<br />
    <img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Initialize&nbsp;the&nbsp;Java&nbsp;method</span><span style="color: #008000"><br />
    <img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SimpleReturnString&nbsp;simpler&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SimpleReturnString();&nbsp;<br />
    <img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Call&nbsp;Java&nbsp;method&nbsp;</span><span style="color: #008000"><br />
    <img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;returnString&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;simpler.returnString();<br />
    <img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txtTest.Text&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;returnString;<br />
    <img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
    <img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
    <img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;</span></div>
    </li>
</ol>
  <img src ="http://www.blogjava.net/goooowei/aggbug/281912.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/goooowei/" target="_blank">GooooWei</a> 2009-06-12 20:59 <a href="http://www.blogjava.net/goooowei/archive/2009/06/12/281912.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>