Java:希望实现将WebService封装到Jar为何加载不到类?

 cheer57_275 发布于 2022-10-25 01:48

创建工程server

IPrinter

@WebService
public interface IPrinter {
    public String print(String str);
}

Printer

@WebService(endpointInterface = "com.server.IPrinter", serviceName = "Printer")
public class Printer implements IPrinter {
    @Override
    public String print(String str) {
        return "Printing:" + str;
    }
}

Server

public class Server {
    public void open() {
        try {
            Endpoint.publish("http://localhost:8000/server", new Printer());  
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

将工程server打包成server.jar后,通过其他工程加载并发布WebService

public class Demo {
    public static void main(String[] args) throws Exception {
        URLClassLoader loader = new URLClassLoader(new URL[] { new URL("file:E:\\server.jar") });
        Class clz = loader.loadClass("com.server.Server");
        Method method = clz.getMethod("open");  
        Constructor constructor = clz.getConstructor();  
        Object instance = constructor.newInstance();  
        method.invoke(instance);
        loader.close();
    }
}

报错如下:

com.sun.xml.internal.ws.model.RuntimeModelerException: 找不到类com.server.IPrinter
    at com.sun.xml.internal.ws.model.RuntimeModeler.getPortTypeName(RuntimeModeler.java:1601)
    at com.sun.xml.internal.ws.model.RuntimeModeler.getPortTypeName(RuntimeModeler.java:1584)
    at com.sun.xml.internal.ws.server.EndpointFactory.create(EndpointFactory.java:226)
    at com.sun.xml.internal.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:144)
    at com.sun.xml.internal.ws.api.server.WSEndpoint.create(WSEndpoint.java:563)
    at com.sun.xml.internal.ws.api.server.WSEndpoint.create(WSEndpoint.java:545)
    at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.createEndpoint(EndpointImpl.java:308)
    at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.publish(EndpointImpl.java:231)
    at com.sun.xml.internal.ws.spi.ProviderImpl.createAndPublishEndpoint(ProviderImpl.java:126)
    at javax.xml.ws.Endpoint.publish(Endpoint.java:240)
    at com.server.Server.open(Server.java:8)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.server.Demo.main(Demo.java:15)

无头绪......

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有