2011-11-15 3 views
0

먼저 Bluetooth를 사용하여 NXT Brick에 연락하도록 코드를 테스트하는 Java App을 만들었습니다. 이 작업이 끝나면 블루투스를 통해 NXT Brick에 연결해야하는 대신 웹 서비스를 만들었습니다.lejos noclassdeffounderer/pc/comm/NXTComm

여기가 문제의 시작입니다. 내 Webservice는 잘 작동하고 서비스를 볼 수 있으며 호출 할 수 있습니다. 하나의 서비스는 Lejos PC Libraries (lejos.pc.comm.NXTComm)에있는 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 

왜 서비스는 이러한 라이브러리를 얻을 수없는 나는이 문제를 해결하기 위해 무엇을해야합니까?

+0

** 실행 중 classpath에서 ** lejos.pc.comm.NXTComm ** 클래스를 사용할 수 있는지 확인 하시겠습니까? – ManuPK

+0

이것은 내가 무엇을 얻을 경우 I 출력 에서 System.out.println ("클래스 경로 ="+ System.getProperty를 ("java.class.path를")); classpath = D : \ Program Files \ Apache 소프트웨어 Foundation \ Tomcat 7.0 \ bin \ bootstrap.jar D : \ Program Files \ Apache 소프트웨어 Foundation \ Tomcat 7.0 \ bin \ tomcat-juli.jar 아니야. 거기에 왜 거기에 더 이상 있지 않습니까? 거기 있어야 할거야? – hhoud

답변

0

그래서 웹 응용 프로그램에 leJOS 라이브러리를 추가하려면 어떻게해야합니까? 왜 그들이 당신이 계급에 있다고 기대하겠습니까?

웹 응용 프로그램의 WEB-INF/lib 폴더에 leJOS 배포본의 lib/pc 폴더에있는 JAR 파일 만 제외하면 작동 할 수 있습니다. 또는 모든 웹 응용 프로그램이 액세스 할 수있는 라이브러리 용 디렉토리가 있습니다. Tomcat이있는 어딘가에 위치해야합니다.

BTW : 시스템 속성 java.class.path는 실제로 클래스를 검색 할 경로를 반환하지 않습니다. (Tomcat이하는) 클래스 로더를 사용하고있는 경우, 검색하는 패스는 java.class.path에 존재하지 않습니다.