IT_Programming/ASP.NET (WEB)

[펌] 닷넷에서 자바 클래스 사용

JJun ™ 2007. 6. 30. 18:32

1. ASP.NET 에서 JAVA CLASS 를 사용하기 위해서는 우선 IKVM.NET 를 다운 받으시기 바랍니다.
다운받을 경로는 아래의 경로에 있습니다.
http://sourceforge.net/project/showfiles.php?group_id=69637

IKVM.NET 에서는 3가지 주요 부분으로 구성되어 있는데 그 중에 ikvmc.exe 파일이 있습니다.
이는 동적 컴파일로써 자바 클래스나 jars 를 .NET 어셈블리에서 컴파일하여 사용할 수 있습니다.

- 사용방법 :
ikvm [-options] <class> [args...] (to execute a class) or ikvm -jar [-options] <jarfile> [args...] (to execute a jar file)

- 해당 폴더에 JavaToNet.class 라는 java 클래스를 구현을 아래와 같이 했다고 하면..

public class JavaToNet
{
    public static void main(String[] args)
    {
        System.out.println("This is a demonstration Program which\n");
        System.out.println("shows the conversion of Java class to\n");
        System.out.println("a .NET dll\n");
    }

    public  static double AddNumbers(double a,double b)

    {
        double c = 0;
        c = a + b;
        return c;   
    }
   

    public  static double SubNumbers(double a,double b)

    {
        double c = 0;
        c = a - b;
        return c;    
     }
   

     public  static double MulNumbers(double a,double b)

     {
        double c = 0;
        c = a * b;
        return c;    
     }

   

     public  static double DivNumbers(double a,double b)

     {
        double c = 0;
        c = a / b;

        return c;    
     }
}


ikvmc 를 아래와 같이 dos 창에서 실행하여, 해당 dll 을 얻습니다.

 



그러면 Visual Studio 에서 JavaToNet.dll 와 생성한 IKVM.GNU.Classpath.dll 를 참조합니다.
asp.net 단에서 아래와 같이 사용할 수 있습니다.

private void btnCal_Click(object sender, System.EventArgs e)
{
     if (rdAdd.Checked == true)
    {

       txtResult.Text = Convert.ToString(JavaToNet.AddNumbers(Convert.ToDouble(txtNum1.Text),Convert.ToDouble(txtNum2.Text)));
    }

    else if (rdSub.Checked ==true)
    {
       txtResult.Text = Convert.ToString(JavaToNet.SubNumbers(Convert.ToDouble(txtNum1.Text),Convert.ToDouble(txtNum2.Text)));           
    }
    else if (rdMul.Checked == true)
    {
    txtResult.Text = Convert.ToString(JavaToNet.MulNumbers(Convert.ToDouble(txtNum1.Text),Convert.ToDouble(txtNum2.Text)));
               
    }
    else
    {
    txtResult.Text = Convert.ToString(JavaToNet.DivNumbers(Convert.ToDouble(txtNum1.Text),Convert.ToDouble(txtNum2.Text)));            
    }
}


또는 using TimeZone = java.util.TimeZone;  사용하여 ....

private void btnTimeZone_Click(object sender, System.EventArgs e)
{
    MessageBox.Show(TimeZone.getDefault().getDisplayName());
}

================================

작성자 : 심재운

메일 : shimpark@gmail.com

카페 : cafe.daum.net/aspdotnet

================================