2014-12-01 14 views
0

요세미티를 실행하는 MacBook Pro에서 Tomcat8을 실행하고 있습니다. 내 다른 프로젝트 중 하나에서 클래스를 참조하지 않으면 Eclipse Luna에서 웹 서비스를 만들었습니다. 클래스 이름은 토큰입니다. 그것은 IDE에서 해결됩니다. 웹 서비스에서 나는 현재 'S : m : n : userId : name : organization : role : state'형식의 매개 변수 "userToken"을 기대합니다. 매개 변수의 항목 중 하나를 생략하면 StringTokenizer 예외가 발생합니다.이 예외는 웹 서비스가 StringTokenizer가 토큰을 너무 빨리 사용하는 토큰 클래스에 매개 변수를 전달하고 있음을 나타냅니다. 클래스가 발견되어 처리되고있는 것으로 보입니다. 토큰 라이저에 대해 올바른 수의 항목으로 유효한 매개 변수를 제공하면 알아낼 수없는 호출 대상 예외가 발생합니다. 여기 jarfile에서 클래스를 호출 할 때 호출 대상 예외가 발생합니다.

내가 IDE의 콘솔에서 얻을 스택 추적의 일부입니다

java.lang.reflect.InvocationTargetException 
    at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222) 
    at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129) 
    at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087) 
    at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) 
    at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source) 
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) 
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) 
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) 
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) 
    at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) 
    at javax.xml.parsers.SAXParser.parse(SAXParser.java:392) 
    at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227) 
    at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696) 
    at org.apache.axis.Message.getSOAPEnvelope(Message.java:435) 
    at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62) 
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206) 
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784) 
    at org.apache.axis.client.Call.invoke(Call.java:2767) 
    at org.apache.axis.client.Call.invoke(Call.java:2443) 
    at org.apache.axis.client.Call.invoke(Call.java:2366) 
    at org.apache.axis.client.Call.invoke(Call.java:1812) 
    at com.shoulderscorp.services.StateMachineWSSoapBindingStub.getUsersApplicationsAndProcesses(StateMachineWSSoapBindingStub.java:106) 
    at com.shoulderscorp.services.StateMachineWSProxy.getUsersApplicationsAndProcesses(StateMachineWSProxy.java:50) 
    at org.apache.jsp.home_jsp._jspService(home_jsp.java:322) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 

나는 매개 변수의 일부를 제공하는 경우가이 방법을 'getUsersApplicationsAndProcesses의 요구, 즉 조직 및 돈 구문 분석을하지 않으면 메서드가 제대로 작동하고 브라우저에 올바르게 표시되는 XML을 반환합니다.

  1. 어떤 일이 일어날 지에 대한 암시를 누군가가 줄 수 있습니까? BTW, '기본'프로그램에서 매개 변수를 사용하여 메서드를 실행하면 올바르게 작동합니다.

  2. 어떻게 오류를 추적 할 수 있습니까? 디버거가 제대로 작동하고 IDE에서 실행될 때 코드로 들어가는 것처럼 보일 수 없습니다.

답변

1

Zounds! 나는 그 문제를 발견했다. 나는이 사이트에 대해 묻는 것이 내가 그것에 대해 설명하고 문제를 해결하는 데 도움이되었다고 생각하는 데 도움이되었다고 생각한다.

다른 프로젝트를 IDE의 배포 어셈블리에 포함시키지 않았습니다. 따라서 IDE에서 올바르게 컴파일되고 제대로 실행되었지만 배포 할 때 다른 프로젝트에 있었던 클래스를 찾을 수 없었습니다. 웹 서비스 코드에 Class.forName ("Token"). newInstance()를 배치했을 때 힌트를 발견했습니다.

다른 프로젝트의 참조로 시도한 첫 번째 웹 서비스이므로이 문제가 발생한 것은 처음입니다. 어디서나 다른 프로젝트에 대한 언급이있는 예제를 보지 못했습니다.

나는 조금 더 현실적인 느낌을 가지고있는 몇 가지 예가 우리가 사방에서 발견 한 'Hello, World'거의 단순한 사이트가 아니라 사이트에서 도움이 될 수 있다고 생각합니다.

관련 문제