创建 JAVA 虚拟机,仅支持 32 位 JRE。
改用 java.openProcess 函数可兼容 32位、64位 JRE。
如果未找到可用的 JVM 运行库返回 null
在每个进程第一次创建JAVA 虚拟机或初始化 JVM 路径之前,
可调用 java.path.setJreHome 自定义搜索 JVM 的 JRE 运行时目录,
jar包搜索顺序为"\","\java\","~\java",
可使用 java.addClassPath 函数添加搜索路径
n可指定一个或多个启动命令行参数,
也可以把多个参数写到一个字符串参数或数组参数里,
参数类似 "-D
在 JAVA 中可以使用 System.getProperty("propertyName") 得到value的值
对于每个打开的进程,JAVA虚拟机仅创建一次实例,
因此所有参数、搜索路径等仅在首次创建虚拟机时生效
添加一个或多个查找类的根目录
添加该目录时将自动添加该目录下已存在的 *.jar 文件
子目录下的jar文件将被忽略
注意:必须在进程首次创建 Java 虚拟机之前调用该函数
添加一个或多个目录
Java中调用System.loadLibrary()时将在指定的目录查找DLL组件
编译java源文件
该函数需要系统安装JDK,可事先设置JAVA_HOME环境变量手动指定JDK位置
注意如果aardio自带了jre版本必须与JDK一致,不然java程序编译后可能无法运行
指定默认编码,
默认值为 "utf-8",
UTF-8 目前是最好也是最通用的设置,
最好不要改也不必要改
创建Java窗口应用程序返回process进程对象
命令行参数可以是数组或任意个文本参数,
如果命令行参数有多个,则包含空格的参数添加必要的双引号和转义,
如果参数@1是数组,
参数@2可指定 process.STARTUPINFO 结构体或部分字段,
规则考 process 构造函数
创建Java控制台应用程序返回process.popen对象
命令行参数可以是数组或任意个文本参数,
如果命令行参数有多个,则包含空格的参数添加必要的双引号和转义,
如果参数@1是数组,
参数@2可指定 process.STARTUPINFO 结构体或部分字段,
规则考 process 构造函数
返回 Java 运行时版号,数值。
版本号为 1.x 时返回第 2 位版本号,否则返回第 1 位版本号(Java 9 以上)。
如果不指定参数,则返回字符串格式的完整版本号。
JVM 虚拟机接口版本,
在进程首次创建虚拟机以前用于指定最低兼容版本
默认会设为 0x10006/*_JNI_VERSION_1_6*/
添加类搜索目录到 CLASSPATH,
此函数仅支持 Java6~Java8
Java9 开始不再支持,可以改用 java.addClassPath,
但 java.addClassPath 仅支持 ANSI编码路径,
addClassLoaderUrl 函数支持 UTF-8 编码路径
添加jar包或文件目录到 CLASSPATH,
Java 在 CLASSPATH 指定的目录或 jar 中搜索类,
参数可以是一个数组,也可以是多个路径参数
将一个或多个基本类型转换为java数组对象
传入参数也可以是一个table类型字符串数组
创建 Java 字节数组,返回 Java 对象(java.object)。
参数可指定 aardio 的字节串( buffer 类型)或字符串对象。
创建 8 位整型数值,返回 Java 对象(java.object)。
创建 16 位无符号整型数值(java.lang.Character),返回 Java 对象(java.object)。
创建 java.util.Date 对象,返回 Java 对象(java.object)。
参数可指定时间戳或 time,time.ole 对象。
不指定参数时获取当前时间戳作为参数。
在 aardio 中调用 Java 函数时,time,time.ole 对象会自动转换为 java.util.Date。
Java 返回的 java.util.Date 也会自动转换为 aardio 的 time 对象。
创建 64 位浮点数值,返回 Java 对象(java.object)。
该函数如果检测到抛出的异常,并清除异常返回true
如果未检测到异常返回空值
返回是否存在指定字段名
创建 32 位浮点数值,返回 Java 对象(java.object)。
返回字段值
创建 java.util.HashMap 对象,返回 Java 对象(java.object)。
参数可指定普通的 aardio 表对象。
注意:在调用 java 函数时,
除 java.object,纯数组,类数组,时间对象以外的表
也会自动转换为 java.util.HashMap 对象。
但 Java 返回的 HashMap 不会自动转换为 aardio 表,
需要显式调用 java 对象的 parseValue 才会转换为 aardio 表。
导入并返回 Java 类。
导入 Java 类。
可选用参数 @2 指定 *.class 文件路径(或指定文件数据并内存加载类)。
导入成功则返回值为导入的 Java 类,可使用返回的类直接构造 Java 对象。
如果类不存在或加载失败返回 null 空值 - 不会抛出异常。
注意此函数需要通过返回值接收导入的 Java 类,
并不会像 dotNet.import 那样自动导入外部命名空间。
创建 32 位整型数值,返回 Java 对象(java.object)。
aardio.interopServices.utility类
调用Java函数,支持多个参数
对于数值类型,aardio将会自动检测适用的数值类型
也可以调用java.int,java.short,java.char,java.long等函数显式的声明数值类型
仅第一次创建java虚拟机时该值为true,
随后创建的虚拟机都会返回false
自参数 @1 指定的文件路径反序化化 Java 对象
创建 64 位整型数值,返回 Java 对象(java.object)。
创建 64 位整型数值,返回 Java 对象(java.object)。
调用构造函数创建对象
java数值对象转换为 aardio 数值
java字等串对象转换为 aardio 字符串
返回参数指定的Java对象是否数值
返回参数指定的Java对象是否字符串
将 Java 对象指针转换为 aardio 数组对象,参数一指定数组元素数据类型
注意:该函数会销毁传入的 Java 对象指针
将参数指定的 jobject 指针转换为 java.object 对象。
支持转换的对象可调用 java.object 对象 parseValue 方法转换为纯 aardio 值。
将 Java 字符串转换为 aardio 字符串。
注意:该函数会销毁传入的 Java 对象指针
将 Java 对象指针转换为 aardio 数组对象
注意:该函数会销毁传入的 Java 对象指针
重定向错误输出到控制台
重定向标准输出到控制台,
如果在创建 Java 虚拟机以后打开控制台,
需要调用此函数才能在控制台看到 Java 的标准输出
修改字段值
创建 16 位整型数值,返回 Java 对象(java.object)。
将aardio字符串转换为java字符串对象
返回对象指针
将一个或多个字符串转换为java字符串数组
传入参数也可以是一个table类型字符串数组
JVM 虚拟机接口版本,
Java 8 的接口版本为 0x10008/*_JNI_VERSION_1_8*/,
目前 Java 10+ 的接口版本号都是 0xa0000/*JNI_VERSION_10*/
Java 类的静态属性或方法。
参数 @2 指定字段类型声明
与函数原型使用的语法一致
返回 Java 类的静态成员函数。
参数 @2 指定函数签名。
不需要调用 getMethod 也可以直接调用类的静态成员函数。
但指定签名可以直接获取指定函数并省略了自动匹配过程。
使用 Java 调用构造函数创建对象,可指定不定个数的参数。
new 方法是类的默认方法可以省略不写直接用 Java 类构造 Java 对象。
改用 new2 函数构造对象可以用第 1 个参数显式指定构造函数签名。
使用 JNI 调用构造函数创建对象。
参数 @1 指定构造函数签名,签名里的返回值必须指定为 void 类型。
参数 @2 开始可指定不定个数的构造参数(new2 名字后面的 2 指示这一要点)。
此函数的实际返回值为构造的 Java 实例对象(不用管签名里的返回值)。
使用类的 new 方法也可以构造 Java 对象。
并且可以省略 new 是默认方法名可以省略,可直接用 Java 类构造 Java 对象。
JavaClassObject.registerNative(
function(env,jobject,jstring){
var str = owner.parseString(jstring)
return owner.string( func() )
},"/*函数名*/","string(string)"
)
注销所有注册到 Java 类中的函数
第二个参数指定字段类型声明。
与函数函数签名支持的类型相同。
返回 Java 对象的成员函数。
参数 @2 指定函数签名。
省略签名则默认设为 "void()"。
注意 Java 区分大小写,返回的函数支持任意个数参数。
不需要调用 getMethod 也可以直接调用类的静态成员函数。
但指定签名可以直接获取指定函数并省略了自动匹配过程。
_JNI_FALSE=0
_JNI_TRUE=1
_JNI_VERSION_10=0xA0000
_JNI_VERSION_11=0xB0000
_JNI_VERSION_12=0xC0000
_JNI_VERSION_13=0xD0000
_JNI_VERSION_14=0xE0000
_JNI_VERSION_15=0xF0000
_JNI_VERSION_1_1=0x10001
_JNI_VERSION_1_2=0x10002
_JNI_VERSION_1_4=0x10004
_JNI_VERSION_1_6=0x10006
_JNI_VERSION_1_7=0x10007
_JNI_VERSION_1_8=0x10008
_JNI_VERSION_9=0x90000