2012-07-06 90 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。