gpt4 book ai didi

java - GWT 中的 JSNI 在调用时生成 java.lang.UnsatisfiedLinkError

转载 作者:行者123 更新时间:2023-11-30 10:06:50 25 4
gpt4 key购买 nike

尝试为遗留 GWT 项目内置 JSNI 支持。我添加了从按钮的 onclick 处理程序调用的简单 JSNI 警报函数 -

public static native void JSAlert(String msg)
/*-{
$wnd.alert(msg);
}-*/;

public class JSNITestCommandHandler extends AbstractEventListener<JSNITestCommand> {

@Override
public void execute(JSNITestCommand event) {
JSAlert("TEST JS ALERT");
}
}

当我点击浏览器中的按钮时,它显示“正在执行...”大约 10 秒,然后出现错误消息 -

------------ 出了点问题------------com.gotapi.hcsapplication.client.XLcmApplicationClient.JSAlert(Ljava/lang/String;)V

java.lang.UnsatisfiedLinkError: com.gotapi.hcsapplication.client.XLcmApplicationClient.JSAlert(Ljava/lang/String;)V

如何解决这个问题?

最佳答案

此错误表明您正在尝试从普通 JVM 中运行仅 GWT 的代码(即不是传统的“开发模式”,或者通过在浏览器中实际执行代码)。具体来说,JSNI 或 JsInterop native 调用不能在 JVM 中运行。

GWT 是为了让你编译 Java 在浏览器中运行,而不是让你在 JVM 中运行 JS。旧的 JSNI 代码或新的 JsInterop 是您编写 Java 来描述将在浏览器中发生的事情的方式,这超出了 Java 可以理解的范围。它不能在普通的 JVM 中运行。

要运行单元测试,请使用 GWTTestCase 作为测试的父类(super class),并使用 gradle/maven GWT 插件来调用测试。这将使 GWT 将您的 Java 编译成 JS,然后在您配置的任何浏览器中运行它(包括 JSNI)。

关于java - GWT 中的 JSNI 在调用时生成 java.lang.UnsatisfiedLinkError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54472490/

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