为什么 Service service= new Service();

package com.util;

import java.net.MalformedURLException;
import java.net.URL;
import java.rmi.RemoteException;

import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class WebServiceClient {
public static String test(String key,String jsonMsg,String endpoint,String orgid,String type) throws ServiceException, MalformedURLException, RemoteException {

    try {
        Service service = new Service();
        Call call = (Call) service.createCall();
        call.setTargetEndpointAddress(new URL(endpoint));
        call.setOperationName("revInsuranceData");
        call.setUseSOAPAction(true);

        String res = (String) call.invoke(new Object[] { id1,type });
        decryptStr = eu.getDecryptStr(key, res);
        System.out.println(decryptStr);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return decryptStr;
}
public static void main(String[] args) throws Exception {
    test( key, jsonMsg, endpoint, orgid, type);
}

}

使用main测试的时候是没有问题的,当放在tomact下,通过方法调用,就会在Service service = new Service()处卡主,使用try/catch捕获异常,会看到java.lang.reflect.InvocationTargetException,但在控制台并不输出这个错误,各个jar包均已经导入,很迷茫呢。等待着大神。

因为Service是一个类

可以把Service实体类代码po出来吗,可能里面有点问题.
在网上看到别人的回复:
看了网上百度的很多答案,所版本不对的,真他么扯淡,我的解决了,是因为实体类的据的get,set方法的数据类型不对,比如定义了private Double str;set,get方法是指定类型的时候就不能指定为double类型,java的Double和double还是不一样的

Main可以 tomcat不可以 其他都没变,很可能是你导的jar包和tomcat自带的jar冲突了,你看下你Tomcat/lib下是否有axis包呢,还有你说控制台不输出日志,错误应该是Error而不是Exception,你换成catch ThrowAble试试

源码
public javax.xml.rpc.Call createCall() throws ServiceException {
this._call = new Call(this);
return this._call;
}
返回的是 javax.xml.rpc.Call 不是你引用的org.apache.axis.client.Call;

对一个类的声明,只有声明了才能使用

由于tomcat在启动时会加载自己的jar包,所以不会加载工程中的相同jar包,后来的解决办法是删除其中的相同的jar包解决的,还有可能是你没有把这个包加入到工程里面来(意思是虽然放到工程里面了,但是没有加载路径,到时程序运行时无法找到该包造成的)

由于tomcat在启动时会加载自己的jar包,所以不会加载工程中的相同jar包,后来的解决办法是删除其中的相同的jar包解决的,还有可能是你没有把这个包加入到工程里面来(意思是虽然放到工程里面了,但是没有加载路径,到时程序运行时无法找到该包造成的)

对一个类的声明,只有声明了才能使用

可以先查一下服务器上tomcat的版本,和你本地的tomcat版本,然后重新引入外部jar包,再修改一下对应的一些引用试试

由于tomcat在启动时会加载自己的jar包,所以不会加载工程中的相同jar包,后来的解决办法是删除其中的相同的jar包解决的,还有可能是你没有把这个包加入到工程里面来(意思是虽然放到工程里面了,但是没有加载路径,到时程序运行时无法找到该包造成的)

对一个类的声明,只有声明了才能使用

由于tomcat在启动时会加载自己的jar包,所以不会加载工程中的相同jar包,后来的解决办法是删除其中的相同的jar包解决的,还有可能是你没有把这个包加入到工程里面来(意思是虽然放到工程里面了,但是没有加载路径,到时程序运行时无法找到该包造成的)

这是对类的声明啊,声明了才行

更新一下配置,用新版本的jar就好用了

由于tomcat在启动时会加载自己的jar包,所以不会加载工程中的相同jar包,后来的解决办法是删除其中的相同的jar包解决的,还有可能是你没有把这个包加入到工程里面来(意思是虽然放到工程里面了,但是没有加载路径,到时程序运行时无法找到该包造成的)

这是对类的声明啊,声明了才行

声明一个类,声明之后可以用service. 来应用service里面的属性和方法

InvocationTargetException-->方法的内部抛出了异常而没有被捕获时,将由此异常接收。new Service()的时候是不是和其他配置有冲突?

由于tomcat在启动时会加载自己的jar包,所以不会加载工程中的相同jar包,后来的解决办法是删除其中的相同的jar包解决的,还有可能是你没有把这个包加入到工程里面来(意思是虽然放到工程里面了,但是没有加载路径,到时程序运行时无法找到该包造成的)

InvocationTargetException 是一种包装由调用方法或构造方法所抛出异常的受查异常。你本地tomcat版本和服务器上的版本应该不一致,需要重新导入jar包

因为service是一个对象啊Service是类或方法

先查一下服务器上tomcat的版本,和你本地的tomcat版本,然后重新引入外部jar包,再修改一下对应的一些引用试试

这是对类的声明啊,声明了才行

由于一系列的原因以及问题还有详情,对于这个代码,其实它很简单,很容易明白,你可以把它理解成一种房间,就是把房间整理好,就是新的房间,

类的操作必须是对对象进行操作

InvocationTargetException异常由Method.invoke(obj, args...)方法抛出。当被调用的方法的内部抛出了异常而没有被捕获时,将由此异常接收。参考:https://yq.aliyun.com/articles/32588

估计是这里的id1和type参数值有问题,检查下。
String res = (String) call.invoke(new Object[] { id1,type });

对类的声明啊,声明了才行由于tomcat在启动时会加载自己的jar包,所以不会加载工程中的相同jar包,后来的解决办法是删除其中的相同的jar包解决的,还有可能是你没有把这个包加入到工程里面来(

需要对类进行声明,还有就是tomcat需要加载jar包

问题还是没有解决,经过测试,感觉像是axis1与tomcat7有冲突。

java.lang.reflect.InvocationTargetException 我感觉应该是你强制类型转换出错了吧
Call call = (Call) service.createCall();