这样,使用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] 下一页
|