主要使用 wasmer-java 加载wasm
二进制文件的示例。
对 beaclnd92 的 imports PR 与 wasmer-java
进行了合并提交到 我的 fork 主分支上了,并对其重新编译出 支持MacM1芯片的 [wasmer-jni-arm64-darwin-0.3.0.jar](https://github.com/lyhu/wasmer-java-sample/tree/main/jar)
(jar目录下的其他的jar是从官网下载的),
最后将不同平台的jar合并到了同一个 [wasmer-jni-0.3.0.jar](https://github.com/lyhu/wasmer-java-sample/tree/main/jar)
,(内部自动根据平台和操作系统进行加载对应的so文件)
golang 研发的 wasm 需要 通过 tinygo 编译 成 wasi目标的 wasm 二进制文件。
GOOS=js GOARCH=wasm go build -o ./html/main.wasm . 编译出来的 wasm格式 主要用在浏览器中 WebAssembly
在本示例中的 src/main/resources/wasm/go
tinygo build -no-debug -o myDemo.wasm -wasm-abi=generic -target=wasi main.go
不过由于 TinyGo 目前的 fs 模块的兼容性问题,我们的编译会失败:
# github.com/common-nighthawk/go-figure
../../go/pkg/mod/github.com/common-nighthawk/[email protected]/bindata.go:3614:11: Chtimes not declared by package os
把对应的 bindata.go 文件的 line 3614 - 3617 行注释掉,重新执行 tinygo build ...
命令就可以了。
3614 // err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
3615 // if err != nil {
3616 // return err
3617 // }