2012-07-06 63 views
-2

com2 - 它是与com端口(rxtx库)一起使用的类。 当我在按钮上运行我的GWT和新闻网站,运行这个功能和错误:在第一次运行Gwt无法使用com端口rxtx

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) 
+0

你有正确安装的所有文件? – 2012-07-06 12:41:00

+0

你是什么意思? – 2012-07-06 12:48:43

+1

为什么一个com-port库在GAE上工作? – 2012-07-06 12:59:54

回答

4

GWT看到主要是转换Java代码的交叉编译完全在浏览器内运行的Javascript。这意味着你不能做任何事情,不能在浏览器中完成像任何IO或访问COM端口

更新1:


其实审核您的问题后,它看起来像你的代码运行服务器不是客户端。你的问题让我困惑。你的问题应该是关于通过嵌入式码头上的gwt rpc执行库的方式。

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

+0

以及它如何实施?而服务器端的GWT支持任何Java代码。那么为什么可以实施? – 2012-07-06 12:48:07

+0

我想通过我的GWT应用程序访问硬件 - 为此我需要放弃应用程序引擎?如何确保页面(服务器部分)可以访问com端口? – 2012-07-06 12:58:01

+1

像@AhHatem提到的那样,你需要从项目中删除GAE依赖。 GAE项目旨在在Google基础架构上运行。 Google已经对Java API的使用设置了限制。例如,您不能执行文件IO操作。通过在Eclipse中取消选择“使用Google App Engine”来创建Web应用程序项目,以消除对GAE的依赖。 – sreehari 2012-07-06 13:00:47

3

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

为避免此错误,请使用“Neuron Robotics Java Serial Library”RxTx分支。

一些优势的本地库的原RXTX

  • 自部署(所有本地代码储存在罐内,并在运行时部署)。没有更多的手动安装的本地代码
  • 称为NRSerialPort一个简化的串行端口类:打开,读,从

    下载 “的.jar” -

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

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

检查最新版本的行家在这里

PS:在谷歌代码的最后一个版本是3.8.4,并在mvnrepository 3.7.5.1。