gpt4 book ai didi

java - Elixir/JInterface - 从 Java 将字符串列表发送回 Elixir

转载 作者:太空宇宙 更新时间:2023-11-04 09:13:08 25 4
gpt4 key购买 nike

我正在运行 elixir/otp 应用程序。它需要使用一些Java代码,所以我使用JInterface来实现类似RPC的通信。

我现在可以正常通讯了。我可以从 Elixir 向 Java 发送一条消息,并从概念上讲发送回一些数据。

我需要发回一个字符串数组。

这似乎是一项简单的任务,但我正在努力寻找正确的文档来完成此任务。我能找到的唯一信息只能真正让我发回二进制字符串。

这是我的 JInterface 代码的重要部分:

    private static void setupMBox() {
try {
OtpNode myOtpNode = new OtpNode("server");
OtpMbox myOtpMbox = myOtpNode.createMbox("ltext");
myOtpNode.setCookie("cookiepassword");

while (true) {
OtpErlangTuple tuple = (OtpErlangTuple) myOtpMbox.receive();
OtpErlangPid lastPid = (OtpErlangPid) tuple.elementAt(0);
OtpErlangAtom dispatch = (OtpErlangAtom) tuple.elementAt(1);

if (dispatch.toString().equals("split_paragraph")) {
List<String> sentences = paragraphSplitter.splitParagraphIntoSentences(TEST_PARAGRAPH, Locale.JAPAN);
List<OtpErlangString> erlangStrings = new ArrayList<OtpErlangString>();

for (String sentence : sentences) {
erlangStrings.add(new OtpErlangString(sentence));
}
// this will not work
OtpErlangList erlangList = new OtpErlangList((OtpErlangObject[]) erlangStrings.toArray());

myOtpMbox.send(lastPid, erlangList);
System.out.println(erlangList);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

如果有人做到了这一点并且可以帮助我,我将非常感谢一些指导。提前致谢!

最佳答案

请说明您的代码有什么问题(预期结果是什么,实际结果是什么)。

一点建议:

OtpErlangString 实际上映射到 Erlang/Elixir 中的 charlist,因此这可能不是您想要的,因为 charlist 不支持 unicode。请使用 OtpErlangBinary 代替,并且不要忘记使用 javaString.getBytes(StandardCharsets.UTF_8) 将所有 java 字符串映射到字节数组,否则您将无法在 Erlang/Elixir 中获得 UTF-8 编码的二进制文件,因为 java 在内部对每个字符串进行 UTF-16LE 编码(由于需要与 Windows 的固定字节 unicode 编码兼容)。

关于java - Elixir/JInterface - 从 Java 将字符串列表发送回 Elixir,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59440844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com