java - 调用 jar 文件中的类时出现 InvokingtargetException

标签 java eclipse class parsing

我在运行 Yosemite 的 MacBook Pro 上运行 Tomcat8。我在 Eclipse Luna 中创建了一个 Web 服务,如果我没有在其他项目之一中引用某个类,该服务就可以工作。类名是Token。在IDE中解决了。在网络服务中,我期望参数“userToken”,当前的形式为“S:m:n:userId:name:organization:role:state”。如果我遗漏参数中的一项,则会收到 StringTokenizer 异常,该异常告诉我 Web 服务正在将参数传递给 Token 类,其中 StringTokenizer 会过早地用完 token 。我添加这个是因为看起来该类正在被发现并且正在处理。如果我为标记生成器提供了包含正确项目数量的有效参数,则会收到我无法弄清楚的调用目标异常。

这是我在 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. 有人可以给我一些关于可能发生的事情的提示吗?顺便说一句,如果我使用“主”程序中的参数运行该方法,它就会正常工作。

  2. 如何找出错误?当调试器在我的 IDE 中运行时,我似乎无法让调试器正常工作并单步执行代码。

最佳答案

震耳欲聋!我发现了问题。我认为在这个网站上提问帮助我更多地思考它以解释它,这有助于解决问题。

我没有将其他项目包含到 IDE 的部署程序集中。因此,它可以正确编译并在 IDE 中正确运行,但无法找到部署时位于另一个项目中的类。当我在Web服务代码中放置Class.forName("Token").newInstance()时,我发现了一个提示。

由于这是我尝试引用另一个项目的第一个 Web 服务,所以这是我第一次遇到这个问题。我还没有看到任何地方引用另一个项目的示例。

我相信一些更真实的例子可能会对网站有所帮助,而不是我们随处可见的非常简单的、几乎是“Hello,World”的例子。

关于java - 调用 jar 文件中的类时出现 InvokingtargetException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27235798/

相关文章:

php - 如何在 Eclipse 中手动指定特定扩展的语法高亮?

ios - 从 NSObject 调用函数

php - 在类内部使用php pack()函数时出现语法错误

c# - 在页面部分或方法内实例化 ASP.NET 中的 C# 类

java - 与 executorService 同步

java - Android 谷歌地图不断崩溃

android - 在 ADT 插件更新后,所有使用某种库的 Android 项目都会抛出 ClassNotFoundException

java - 以 HTML 格式发送电子邮件

用于管理 Apple 推送通知的 Java 库

java - 使用 ksop2 如何将大文件发送到 web 服务