aardio 文档

java 库模块帮助文档

📄 aardio + Java 开发指南

java 成员列表 #

创建 JAVA 虚拟机,仅支持 32 位 JRE。
改用 java.openProcess 函数可兼容 32位、64位 JRE。
如果未找到可用的 JVM 运行库返回 null
在每个进程第一次创建JAVA 虚拟机或初始化 JVM 路径之前,
可调用 java.path.setJreHome 自定义搜索 JVM 的 JRE 运行时目录,
jar包搜索顺序为"\","\java\","~\java",
可使用 java.addClassPath 函数添加搜索路径

java() #

返回对象:javaObject

java(命令行参数,...) #

n可指定一个或多个启动命令行参数,
也可以把多个参数写到一个字符串参数或数组参数里,

参数类似 "-D=value"
在 JAVA 中可以使用 System.getProperty("propertyName") 得到value的值

对于每个打开的进程,JAVA虚拟机仅创建一次实例,
因此所有参数、搜索路径等仅在首次创建虚拟机时生效

java.addClassPath() #

添加一个或多个查找类的根目录
添加该目录时将自动添加该目录下已存在的 *.jar 文件
子目录下的jar文件将被忽略
注意:必须在进程首次创建 Java 虚拟机之前调用该函数

java.addLibPath() #

添加一个或多个目录
Java中调用System.loadLibrary()时将在指定的目录查找DLL组件

java.compile("java源文件路径") #

编译java源文件
该函数需要系统安装JDK,可事先设置JAVA_HOME环境变量手动指定JDK位置
注意如果aardio自带了jre版本必须与JDK一致,不然java程序编译后可能无法运行

java.compile() #

返回对象:processPopenObject

java.encoding #

指定默认编码,
默认值为 "utf-8",
UTF-8 目前是最好也是最通用的设置,
最好不要改也不必要改

java.openProcess("-jar","命令行参数", ... ) #

创建Java窗口应用程序返回process进程对象
命令行参数可以是数组或任意个文本参数,
如果命令行参数有多个,则包含空格的参数添加必要的双引号和转义,
如果参数@1是数组,
参数@2可指定 process.STARTUPINFO 结构体或部分字段,
规则考 process 构造函数

java.openProcess() #

返回对象:processObject

java.popenProcess("-jar","命令行参数", ... ) #

创建Java控制台应用程序返回process.popen对象
命令行参数可以是数组或任意个文本参数,
如果命令行参数有多个,则包含空格的参数添加必要的双引号和转义,
如果参数@1是数组,
参数@2可指定 process.STARTUPINFO 结构体或部分字段,
规则考 process 构造函数

java.popenProcess() #

返回对象:processPopenObject

java.runtimeVersion(true) #

返回 Java 运行时版号,数值。
版本号为 1.x 时返回第 2 位版本号,否则返回第 1 位版本号(Java 9 以上)。
如果不指定参数,则返回字符串格式的完整版本号。

java.version #

JVM 虚拟机接口版本,
在进程首次创建虚拟机以前用于指定最低兼容版本
默认会设为 0x10006/*_JNI_VERSION_1_6*/

javaObject 成员列表 #

javaObject.addClassLoaderUrl #

添加类搜索目录到 CLASSPATH,
此函数仅支持 Java6~Java8
Java9 开始不再支持,可以改用 java.addClassPath,
但 java.addClassPath 仅支持 ANSI编码路径,
addClassLoaderUrl 函数支持 UTF-8 编码路径

javaObject.addClassLoaderUrl("类搜索路径") #

添加jar包或文件目录到 CLASSPATH,
Java 在 CLASSPATH 指定的目录或 jar 中搜索类,
参数可以是一个数组,也可以是多个路径参数

javaObject.array("int",) #

将一个或多个基本类型转换为java数组对象
传入参数也可以是一个table类型字符串数组

javaObject.buffer() #

创建 Java 字节数组,返回 Java 对象(java.object)。
参数可指定 aardio 的字节串( buffer 类型)或字符串对象。

javaObject.byte() #

创建 8 位整型数值,返回 Java 对象(java.object)。

javaObject.char() #

创建 16 位无符号整型数值(java.lang.Character),返回 Java 对象(java.object)。

javaObject.date() #

创建 java.util.Date 对象,返回 Java 对象(java.object)。
参数可指定时间戳或 time,time.ole 对象。
不指定参数时获取当前时间戳作为参数。

在 aardio 中调用 Java 函数时,time,time.ole 对象会自动转换为 java.util.Date。
Java 返回的 java.util.Date 也会自动转换为 aardio 的 time 对象。

javaObject.double() #

创建 64 位浮点数值,返回 Java 对象(java.object)。

javaObject.exceptionClear() #

该函数如果检测到抛出的异常,并清除异常返回true
如果未检测到异常返回空值

javaObject.fieldExists(Java对象,"字段名") #

返回是否存在指定字段名

javaObject.float() #

创建 32 位浮点数值,返回 Java 对象(java.object)。

javaObject.getFieldValue(Java对象,"字段名") #

返回字段值

javaObject.hashMap() #

创建 java.util.HashMap 对象,返回 Java 对象(java.object)。
参数可指定普通的 aardio 表对象。

注意:在调用 java 函数时,
除 java.object,纯数组,类数组,时间对象以外的表
也会自动转换为 java.util.HashMap 对象。
但 Java 返回的 HashMap 不会自动转换为 aardio 表,
需要显式调用 java 对象的 parseValue 才会转换为 aardio 表。

javaObject.import #

导入并返回 Java 类。

javaObject.import("类名","类文件路径") #

导入 Java 类。
可选用参数 @2 指定 *.class 文件路径(或指定文件数据并内存加载类)。
导入成功则返回值为导入的 Java 类,可使用返回的类直接构造 Java 对象。
如果类不存在或加载失败返回 null 空值 - 不会抛出异常。

注意此函数需要通过返回值接收导入的 Java 类,
并不会像 dotNet.import 那样自动导入外部命名空间。

javaObject.import() #

返回对象:JavaClassObject

javaObject.int() #

创建 32 位整型数值,返回 Java 对象(java.object)。

javaObject.interop #

aardio.interopServices.utility类

javaObject.invokeMethod(类或对象,其他调用参数...) #

调用Java函数,支持多个参数
对于数值类型,aardio将会自动检测适用的数值类型
也可以调用java.int,java.short,java.char,java.long等函数显式的声明数值类型

javaObject.isMainThread #

仅第一次创建java虚拟机时该值为true,
随后创建的虚拟机都会返回false

javaObject.loadFileObject() #

自参数 @1 指定的文件路径反序化化 Java 对象

javaObject.long() #

创建 64 位整型数值,返回 Java 对象(java.object)。

创建 64 位整型数值,返回 Java 对象(java.object)。

javaObject.new(java类对象,...) #

调用构造函数创建对象

javaObject.object2Number() #

java数值对象转换为 aardio 数值

javaObject.object2String() #

java字等串对象转换为 aardio 字符串

javaObject.objectIsNumber() #

返回参数指定的Java对象是否数值

javaObject.objectIsString() #

返回参数指定的Java对象是否字符串

javaObject.parseArray("int",java数组) #

将 Java 对象指针转换为 aardio 数组对象,参数一指定数组元素数据类型
注意:该函数会销毁传入的 Java 对象指针

javaObject.parseObject(jobject) #

将参数指定的 jobject 指针转换为 java.object 对象。
支持转换的对象可调用 java.object 对象 parseValue 方法转换为纯 aardio 值。

javaObject.parseString() #

将 Java 字符串转换为 aardio 字符串。
注意:该函数会销毁传入的 Java 对象指针

javaObject.parseStringArray(java数组) #

将 Java 对象指针转换为 aardio 数组对象
注意:该函数会销毁传入的 Java 对象指针

javaObject.reopen("setErr","conerr$") #

重定向错误输出到控制台

javaObject.reopen("setOut","conout$") #

重定向标准输出到控制台,
如果在创建 Java 虚拟机以后打开控制台,
需要调用此函数才能在控制台看到 Java 的标准输出

javaObject.setFieldValue(Java对象,"字段名",字段值) #

修改字段值

javaObject.short() #

创建 16 位整型数值,返回 Java 对象(java.object)。

javaObject.string() #

将aardio字符串转换为java字符串对象
返回对象指针

javaObject.stringArray() #

将一个或多个字符串转换为java字符串数组
传入参数也可以是一个table类型字符串数组

javaObject.version #

JVM 虚拟机接口版本,
Java 8 的接口版本为 0x10008/*_JNI_VERSION_1_8*/,
目前 Java 10+ 的接口版本号都是 0xa0000/*JNI_VERSION_10*/

JavaClass()Object 成员列表 #

返回对象:JavaObject

JavaClassObject 成员列表 #

JavaClassObject.* #

Java 类的静态属性或方法。

JavaClassObject.getField("字段名","int") #

参数 @2 指定字段类型声明
与函数原型使用的语法一致

JavaClassObject.getMethod("函数名","int(int)") #

返回 Java 类的静态成员函数。
参数 @2 指定函数签名

不需要调用 getMethod 也可以直接调用类的静态成员函数。
但指定签名可以直接获取指定函数并省略了自动匹配过程。

JavaClassObject.new(...) #

使用 Java 调用构造函数创建对象,可指定不定个数的参数。
new 方法是类的默认方法可以省略不写直接用 Java 类构造 Java 对象。

改用 new2 函数构造对象可以用第 1 个参数显式指定构造函数签名。

JavaClassObject.new2("void()"...) #

使用 JNI 调用构造函数创建对象。
参数 @1 指定构造函数签名,签名里的返回值必须指定为 void 类型。
参数 @2 开始可指定不定个数的构造参数(new2 名字后面的 2 指示这一要点)。
此函数的实际返回值为构造的 Java 实例对象(不用管签名里的返回值)。

使用类的 new 方法也可以构造 Java 对象。
并且可以省略 new 是默认方法名可以省略,可直接用 Java 类构造 Java 对象。

JavaClassObject.new2() #

返回对象:JavaObject

JavaClassObject.registerNative(函数,函数名,签名) #

JavaClassObject.registerNative(  
    function(env,jobject,jstring){  
        var str = owner.parseString(jstring)  

        return owner.string( func() )  
    },"/*函数名*/","string(string)"  
)

JavaClassObject.unregisterNatives() #

注销所有注册到 Java 类中的函数

JavaObject 成员列表 #

JavaObject.getField("字段名","int") #

第二个参数指定字段类型声明。
与函数函数签名支持的类型相同。

JavaObject.getMethod("函数名","int(int)") #

返回 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

Markdown 格式