-2

com2 - 它是与 com 端口(rxtx 库)一起使用的类。当我在 gwt 上运行我的网站并按下按钮时,运行此功能并出现错误:

public String greetServer(String input)  {


    try {
        comm2 COM = new comm2("COM3", "$KE,WR,6,1\n");
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return input;



}


  Caused by: java.lang.NoClassDefFoundError: Could not initialize class gnu.io.CommPortIdentifier
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at com.google.appengine.tools.development.agent.runtime.RuntimeHelper.checkRestricted(RuntimeHelper.java:69)
        at com.google.appengine.tools.development.agent.runtime.Runtime.checkRestricted(Runtime.java:64)
        at com.aaa.server.comm2.<init>(comm2.java:17)
        at com.aaa.server.GreetingServiceImpl.greetServer(GreetingServiceImpl.java:18)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:115)
        at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569)
        ... 34 more

在第一次运行时我看到错误

Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission loadLibrary.rxtxSerial)
4

2 回答 2

4

GWT 主要是一个交叉编译器,它将 Java 代码转换为完全在浏览器内部运行的 Javascript。这意味着你不能做任何不能在浏览器内完成的事情,比如任何类型的 IO 或访问 COM 端口

更新1:


实际上,在查看您的问题之后,您的代码似乎是在服务器而不是客户端上运行的。你的问题让我很困惑。您的问题应该是关于通过嵌入式码头上的 gwt rpc 或其他方式执行库。

我可以看到您的堆栈跟踪列出了谷歌应用程序引擎,您打算在应用程序引擎上运行该应用程序吗?如果是,那么您打算如何访问硬件?如果没有,您应该删除应用引擎依赖并直接在网络服务器上运行。

于 2012-07-06T12:43:06.323 回答
3

这是因为您在正确的目录或路径中没有所有 RxTx 本机依赖项。

为避免此错误,请使用“Neuron Robotics Java Serial Library”一个 RxTx fork。

与原始 RxTx 相比的一些优势

  • 本机库的自我部署(所有本机代码都存储在 jar 中并在运行时部署)。不再需要手动安装本机代码
  • 一个名为 NRSerialPort 的简化串行端口类,用于:打开、读取、写入

从下载“.Jar”

或者,如果您使用 Maven,请使用

<dependency>
    <groupId>com.neuronrobotics</groupId>
    <artifactId>nrjavaserial</artifactId>
    <version>3.7.5.1</version>
</dependency>

在此处检查 Maven 的最新版本

PS:Google-code 中的最后一个版本是 3.8.4,mvnrepository 是 3.7.5.1。

于 2012-07-08T04:08:40.663 回答