岁月联盟 · 中国技术网 本站主页 | 安全认证 | 用户服务 | 技术论坛
新闻快报 | 新手学堂 | 黑客特区 | 程序语言 | 数 据 库 | 防 火 墙 | 路由交换 | 系统集成 | 服 务 器 | 存储备份 | 考试认证
Windows | Linux | Java | 协议分析 | 问题解答 | 进程大全 | 网页设计 | 多 媒 体 | 图库资料 | 软件下载 | 站内下载
  您现在的位置: 岁月联盟 >> Java >> 其他技术 >> Java正文
Java和.NET互操作究竟有什么用?
作者:未知 文章来源:本站整理 点击数: 更新时间:2007-7-23 9:51:58
这样,使用JuggerNET在.NET应用中加载JVM程序的示例代码应该符合下面的过程:


  /*
  * Copyright 1999-2006 by Codemesh, Inc.  ALL RIGHTS RESERVED.
  */
using System;
using Codemesh.JuggerNET;

//
// 下面的代码设定JVM环境并且在程序中进行Java调用。
//
// 使用的Java虚拟机由平台依赖的业务逻辑决定。
// 在这个例子中,也可以使用JvmPath属性来设置程序将要使用的JVM。
public class Application
{
public static void Main( string[] argv )
{
try
{
//--------------------------------------------------------------------
// 下面的代码提供了访问一个对象的途径,你可以使用这个对象来初始化运行时设置。
//
IJvmLoader loader = JvmLoader.GetJvmLoader();

//--------------------------------------------------------------------
// 配置Java设置
//

// 设置classpath参数为当前的工作目录
loader.ClassPath = ".";

// 在classpath中添加CWD的父目录
loader.AppendToClassPath( ".." );

// 设置堆栈的最大值
loader.MaximumHeapSizeInMB = 256;

//  设置一组 -D 选项
loader.DashDOption[ "myprop" ] = "myvalue";
loader.DashDOption[ "prop_without_value" ] = null;

// 指定 TraceFile记录文件.如果不指定,所有的记录输出将会加入到 stderr标准错误之中
loader.TraceFile = ".\\trace.log";

//--------------------------------------------------------------------
// 你可以将这一项置空,在第一个代理操作执行时,或是可以精确加载Java虚拟机的时候,
// 使用配置设置来去除程序对于JVM环境的需求。
// 如果有错误发生,将会抛出一个异常。
//
loader.Load();

}
catch( System.Exception )
{
Console.WriteLine( "!!!!!!!!!!!!!!!  we caught an exception  !!!!!!!!!!!!!!!!" );
}

  Console.WriteLine( "***************  we're leaving Main() ****************" );

  return;
}
}

 

上一页  [1] [2] [3] [4] [5] 下一页  

 .NET到Java代码生成的代理机制中,具备一定的编程技巧,因为存在一些手动设置来指定哪一个Java类和包应该被设为代理,实现这样的过程可以使用JuggerNET的GUI工具来指定描述包和类清单的模型文件,或者可以使用Ant脚本(这意味着一部分或全部的.NET程序发布需要使用Java的Ant工具来实现,对于互操作项目来说,这并非是完全不切合实际的),通过使用"


 /*
  * Copyright 1999-2006 by Codemesh, Inc.  ALL RIGHTS RESERVED.
  */

using System;
using Codemesh.JuggerNET;
using Java.Lang;
using Java.Util;

///


/// 使用.NET类型来定义数据成员。
/// 通过拓展序列化的代理接口,我们自动为.NET类型产生被称为"peer"的参数。
/// 序列化接口在代码生成器中进行标记,
/// 并且使用Java同等的类型来保持.NET实例的序列化信息。
///
public class MyDotNetClass : Java.Io.Serializable
{
  public int  field1 = 0;
  public int  field2 = 1;
  public string strField = "";

  public MyDotNetClass()
  {
  }

  public MyDotNetClass( int f1, int f2, string s )
  {
   field1 = f1;
   field2 = f2;
   strField = s;
  }

  public override string ToString()
  {
   return "MyDotNetClass[field1=" + field1 + ", field2=" + field2 + ", strField='" + strField + "']";
  }
}

///
/// 另一个.NET的类型继承自Serializable,
/// 但是声明为不同类型的数据元素。
///
public class MyDotNetClass2 : Java.Io.Serializable
{
  public int[] test = new int[] { 0, 1, 2 };

  public MyDotNetClass2()
  {
  }

  public MyDotNetClass2( int f1, int f2 )
  {
   test[ 0 ] = f1;
   test[ 1 ] = f2;
  }

  public override string ToString()
  {
   Syste

上一页  [1] [2] [3] [4] [5] 下一页


  • 上一个Java:
  • 下一个Java:
  •  
    热门文章
    推荐文章
    关于我们 | 发展历程 | 网站地图 | 广告服务 | 招贤纳士 | 战略合作 | 友情链接 | 著作声明 | 联系我们
    Copyright © 2002-2007 SYUE All rights reserved.
    E_mail:WebSyue@163.Com 皖ICP备05004589号
    未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
    天龙八部私服 热血江湖私服 天龙八部私服 bet365 魔域私服 劲舞私服 传奇世界私服 bet365 传世私服 传奇世界私服