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)
答案 0 :(得分:4)
GWT主要是一个交叉编译器,它将Java代码转换为完全在浏览器内运行的Javascript。这意味着你不能做任何在浏览器内部无法完成的任何事情或访问COM端口
更新1:
实际上,在审核了您的问题后,您的代码似乎是在服务器上运行而不是在客户端上运行。你的问题困惑了我。你的问题应该是关于通过嵌入式码头上的gwt rpc执行库或其他什么。
我可以看到你的堆栈跟踪列出谷歌应用引擎,你打算在应用引擎上运行应用程序吗?如果是,那么您打算如何访问硬件?如果没有,您应该删除应用引擎依赖项并直接在Web服务器上运行。
答案 1 :(得分:3)
这是因为您没有正确的目录或路径中的所有RxTx本机依赖项。
为避免此错误,请使用“Neuron Robotics Java Serial Library”一个RxTx fork。
优于原始RxTx的优势
从
下载“.Jar”如果您使用maven,请使用
<dependency>
<groupId>com.neuronrobotics</groupId>
<artifactId>nrjavaserial</artifactId>
<version>3.7.5.1</version>
</dependency>
检查maven的最新版本
PS:Google代码中的最新版本为3.8.4,并且位于mvnrepository 3.7.5.1中。