lejos noclassdeffounderror lejos/pc/comm/NXTComm

发布于 2024-12-15 12:14:31 字数 3187 浏览 0 评论 0原文

首先,我创建了一个 Java 应用程序来测试我的代码,以使用蓝牙联系 NXT Brick。一旦这个工作成功,我创建了一个 Web 服务,它应该通过蓝牙连接到 NXT Brick。

这就是问题开始的地方。我的 Web 服务工作正常,我可以看到服务并且可以调用它们。 一项服务使用 NXTComm,它位于 Lejos PC Libraries (lejos.pc.comm.NXTComm)。我已将这些库添加到项目中,并添加了“import lejos.pc.comm.*;”在班级的顶部,但我仍然收到以下错误。

[ERROR] lejos/pc/comm/NXTComm
java.lang.reflect.InvocationTargetException
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 org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:212)
at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:117)
at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: lejos/pc/comm/NXTComm
at mindstorms.Connector.getBots(Connector.java:111)
at mindstorms.MindstormService.getBots(MindstormService.java:30)
... 29 more
Caused by: java.lang.ClassNotFoundException: lejos.pc.comm.NXTComm
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
... 31 more

为什么服务无法访问这些库?我应该如何解决这个问题?

First I created a Java App to test my code to contact the NXT Brick using Bluetooth. Once this worked I created a Webservice instead which should connect to the NXT Brick through Bluetooth.

This is where the problems start. My Webservice works fine, I can see the services and I can invoke them.
One service uses NXTComm, which is in the Lejos PC Libraries (lejos.pc.comm.NXTComm). I've added these libraries to the project and I've added "import lejos.pc.comm.*;" at the top of the class but I still get the following error.

[ERROR] lejos/pc/comm/NXTComm
java.lang.reflect.InvocationTargetException
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 org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:212)
at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:117)
at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: lejos/pc/comm/NXTComm
at mindstorms.Connector.getBots(Connector.java:111)
at mindstorms.MindstormService.getBots(MindstormService.java:30)
... 29 more
Caused by: java.lang.ClassNotFoundException: lejos.pc.comm.NXTComm
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
... 31 more

Why can't the services get to these libraries and what should I do to fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

岁月打碎记忆 2024-12-22 12:14:31

那么为了将 leJOS 库添加到您的 Web 应用程序中,您做了什么?为什么你会期望它们在类路径中?

如果您将 leJOS 发行版中的 lib/pc 文件夹中的 JAR 文件放入 Web 应用程序的 WEB-INF/lib 文件夹中,则可能会起作用。或者,还有一个所有 Web 应用程序都可以访问的库目录。它必须位于 Tomcat 所在的某个位置。

顺便说一句:系统属性 java.class.path 并不真正返回搜索类的路径。如果使用类加载器(tomcat 就是这样做的),它们搜索的路径不会出现在 java.class.path 中。

So what have you done in order to add the leJOS libraries to your web application? Why would you expect, that they are in the classpath?

It might work, if you but the JAR files from the folder lib/pc in your leJOS distribuion into the WEB-INF/lib folder of your web application. Alternatively, there is a directory for libraries that all web application can access. It must be located somewhere where Tomcat is located.

BTW: The system property java.class.path does not really return the paths that are searched for classes. If one is using classloaders (which tomcat does), the paths they search are not present in java.class.path.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文