【问题标题】:Interface is not visible from class loader接口在类加载器中不可见
【发布时间】:2012-08-30 14:55:13
【问题描述】:

我是新手!框架和使用 wsdl2java 工具。我正在开发一个游戏!需要与 SOAP Web 服务交互的应用程序。我有 WSDL 并使用 jaxws 从它创建对象。它正在创建一堆 java 类和 1 个接口。一旦我尝试进行 web 服务调用,我就会收到一个错误,即类加载器找不到接口。这是我的代码:

MyWebserviceBeanService service = new MyWebserviceBeanService();
MyWebserviceRemote mwr = service.getMyWebserviceBeanPort();
LoginResponse response = mwr.loginUser("xxx", "xxx");

请注意,“MyWebserviceRemote”是接口。 getMyWebserviceBeanPort 的代码很常见,因为它是自动生成的,但这里是:

@WebEndpoint(name = "MyWebserviceBeanPort")
public MyWebserviceRemote getMyWebserviceBeanPort() {
    return super.getPort(new QName("http://xxxxxxxxxx/", "MyWebserviceBeanPort"), MyWebserviceRemote.class);
}

当我尝试调用一个方法时,例如loginUser 方法如上,我得到以下堆栈跟踪:

play.exceptions.JavaExecutionException: interface xxxx.xxxx.xxxx.MyWebserviceRemote is not visible from class loader
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:237)
    at Invocation.HTTP Request(Play!)
Caused by: java.lang.IllegalArgumentException: interface xxxx.xxxxx.xxxx.MyWebserviceRemote is not visible from class loader
    at com.sun.xml.ws.client.WSServiceDelegate.createEndpointIFBaseProxy(WSServiceDelegate.java:736)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:408)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:384)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:366)
    at javax.xml.ws.Service.getPort(Service.java:119)
    at xxxx.xxxx.xxxx.MyWebserviceBeanService.getMyWebserviceBeanPort(MyWebserviceBeanService.java:72)
    at controllers.MyController.index(MyController.java:26)
    at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:557)
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:508)
    at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:484)
    at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:479)
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:161)
    ... 1 more

我真的不知道如何解决这个问题,甚至不知道如何调试它。我在哪里看?我从哪说起呢?我使用 SoapUI 测试了 Web 服务,它运行良好。

谢谢!

【问题讨论】:

    标签: playframework classloader wsdl2java


    【解决方案1】:

    这是由 play 框架中的 jar 文件冲突引起的(总共 3 个名称中带有“jax”的 jar)。我删除了它们,现在一切都很好。为描述性错误消息欢呼:-)

    【讨论】:

      【解决方案2】:

      我有同样的问题,所以我不得不从依赖项之一中排除这个依赖项:

      <exclusions>
          <exclusion>
              <groupId>com.sun.xml.ws</groupId>
              <artifactId>rt</artifactId>
          </exclusion>
      </exclusions>
      

      【讨论】:

        【解决方案3】:

        查看您是否启用了 spring-dev-tools。如果可以接受,请将其从依赖项中删除:

        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-devtools</artifactId>
          <scope>runtime</scope>
        </dependency>
        

        【讨论】:

          猜你喜欢
          • 2011-02-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多