Java-将第三方接口打包jar部署到tomcat上提示wsdl文件找不到

发布于 2016-10-29 10:41:12 字数 668 浏览 1398 评论 1

最近在用java做一个Web项目,该web项目需要调用第三方平台(UPS)的WebService接口。我首先新建一个项目ups-service,然后通过jax-ws工具将从wsdl文件中生成客户端访问代码。将生成的代码导入到ups-service项目中,将wsdl文件也放在该工程中。如图:

请输入图片描述

但是当我把该项目打成jar文件,放到我的web项目中使用时,提示wsdl文件找不到。错误代码如下:

请输入图片描述

生成的wsdl客户端文件加载wsdl文件部分的代码如下:

请输入图片描述

ups-service我运行单元测试是没问题的,部署到tomcat上面就说wsdl文件找不到。错在哪里呢?无头绪ing..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浮生未歇 2016-12-21 06:22:28

BlaBlaClass.class.getResouce(".");

这种写法, 你在tomcat里得到的应该是"e://.../eclipse"; 我试了下,在我机子上得到的是空.

BlaBlaClass.class.getResouce("/");

在我的tomcat上可以拿到:

file:/D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/wtpwebapps/df/WEB-INF/classes/

加上.wsdl的路径可以拿到:

file:/D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/wtpwebapps/df/WEB-INF/classes/sdf/xsd/xxxx.wsdl

我把xsd/xxxx.wsdl在web项目src里考了一份,则可以在上述路径看到此.wsdl文件.

希望对你有所帮助.

更新:
.class.getResource(path), 对路径path做更改, 以'/'开头则去掉'/', 不以'/'开头则加上当前类包名,以'/'分割; 然后调用对应classloader的getResource()方法.

package package1;

import org.junit.Test;

public class BlaBla {

@Test
public void test0(){
System.out.println("begin test0");
ClassLoader cl=this.getClass().getClassLoader();
while(cl!=null){
System.out.println("ClassLoader: "+cl);
System.out.println("dir of '/': "+cl.getResource(""));
cl=cl.getParent();
}
}

@Test
public void test1() {
System.out.println("begin test1");
System.out.println(this.getClass().getResource("/"));
System.out.println(this.getClass().getClassLoader().getResource(""));
}

@Test
public void test2() {
System.out.println("begin test2");
System.out.println(this.getClass().getResource("."));
System.out.println(this.getClass().getClassLoader().getResource("package1/."));
}

}

本地运行结果:

begin test0
ClassLoader: sun.misc.Launcher$AppClassLoader@7dcb3cd
dir of '/': file:/D:/workspace/fd/bin/
ClassLoader: sun.misc.Launcher$ExtClassLoader@2aa05bc3
dir of '/': null

begin test1
file:/D:/workspace/fd/bin/
file:/D:/workspace/fd/bin/

begin test2
file:/D:/workspace/fd/bin/package1/
file:/D:/workspace/fd/bin/package1/

在tomcat7上, 写一个servlet, 调用test0(),test1(),test2(), 可见:

begin test0
ClassLoader: WebappClassLoader
context: /df
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader:
org.apache.catalina.loader.StandardClassLoader@60bb6b37
dir of '/': file:/D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/wtpwebapps/df/WEB-INF/classes/

ClassLoader: org.apache.catalina.loader.StandardClassLoader@60bb6b37
dir of '/': file:/D:/sw/apache-tomcat-7.0.40/lib/
ClassLoader: sun.misc.Launcher$AppClassLoader@7dcb3cd
dir of '/': null
ClassLoader: sun.misc.Launcher$ExtClassLoader@2aa05bc3
dir of '/': null

begin test1
file:/D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/wtpwebapps/df/WEB-INF/classes/
file:/D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/wtpwebapps/df/WEB-INF/classes/

begin test2
null
null

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文