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.boolean()

创建布尔值-返回 Java 对象

javaObject.char()

创建8位整型数值-返回 Java 对象

javaObject.createInstance(java类对象,...)

调用构造函数创建对象

javaObject.double()

创建64位浮点数值-返回 Java 对象

javaObject.exceptionClear()

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

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

返回是否存在指定字段名

javaObject.float()

创建32位浮点数值-返回 Java 对象

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

返回字段值

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

加载指定的类
可选用参数@2指定类文件路径、或者自内存文件加载类
如果类不存在或加载失败返回null空值 - 不会抛出异常

javaObject.import()

返回对象:JavaClassObject

javaObject.int()

创建32位整型数值-返回 Java 对象

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 对象

javaObject.object2Number()

java数值对象转换为 aardio 数值

javaObject.object2String()

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

javaObject.objectIsNumber()

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

javaObject.objectIsString()

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

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

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

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 对象

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.createInstance(...)

使用Java调用构造函数创建对象
不限制参数个数以及类型,
允许以类名本身替代此函数

JavaClassObject.createInstanceEx("void()",...)

使用 JNI 调用构造函数创建对象
参数最多只能是一个参数,或者一个参数数组,
用户应使用createInstance,该函数不限制参数个数以及类型

JavaClassObject.createInstanceEx()

返回对象:JavaObject

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

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

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

返回静态函数,参数 @2 指定函数原型。
注意 Java 区分大小写,参数只能指定单个参数或数组类型,
如果需要使用多个参数或动态参数,请直接使用 对象.函数名 获取函数
注意返回的是原生函数,调用时数值、布尔值不可以使用Java对象

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("函数名")

返回对象的成员函数。
注意 Java 区分大小写,返回的函数支持任意个数参数。
注意无论 Java 对象是否存在该函数都会返回一个函数对象

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

返回对象的成员函数,参数 @2 指定函数原型。
注意 Java 区分大小写,参数只能指定单个参数或数组类型,
如果需要使用多个参数或动态参数,请直接使用 对象.函数名 获取函数
注意返回的是原生函数,调用时数值、布尔值不可以使用Java对象

自动完成常量

_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 格式