【发布时间】:2015-02-26 15:04:57
【问题描述】:
我在 ecipe spring 工具套件 IDE 中有一个 spring mvc 项目,我想从 WSDL 添加一些类,我尝试使用maven-jaxb2-plugin,但是当我使用 maven 更新我的项目时它什么也不做。因此,我尝试在 Eclipse 中创建一个 Web 服务客户端,并在服务定义中放置我的 WSDL url,但加载几秒钟后它给了我一个 Invalid segment definition,毕竟我尝试在 Netbeans 中创建一个 Java 应用程序项目,然后添加该项目中的 Web 服务客户端使用我的 WSDL url 这次成功了!所以我尝试添加该项目的 .JAR 文件,该文件位于 D:/Users/myUser/Documents/NetBeansProjects/ImportClassesFromWSDL/dist/ImportClassesFromWSDL.jar
我按照此步骤 How to import a jar in Eclipse 将此 jar 添加为外部 JAR,.JAR 已添加但我有此警告
Classpath entry D:/Users/myUser/Documents/NetBeansProjects/ImportClassesFromWSDL/dist/ImportClassesFromWSDL.jar will not be exported or published. Runtime ClassNotFoundExceptions may result. WSproject P/WSproject Classpath Dependency Validator Message
在 Eclipse 文本编辑器中,我可以毫无问题地编写类的名称并毫无问题地创建此类的对象,但是当我运行我的项目并进入从导入的类创建此对象时的部分时,我获取类未找到异常
HTTP 500 - 处理程序处理失败;嵌套异常是 java.lang.NoClassDefFoundError: mycompany/myws/myschema/myClassWs
: Servlet.service() servlet [appServlet] [/app] [Handler processing failed; nested exception is java.lang.NoClassDefFoundError: mycompany/myws/myschema/myClassWs] java.lang.ClassNotFoundException: mycompany/myws/myschema/myClassWs
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
at com.pruebaWsCompany.app.HomeController.myWsPage(HomeController.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
【问题讨论】:
-
只需将您的 jar 复制到项目中的
WEB-INF/lib目录,这样它在运行时也可用 -
感谢我不再有 classNotFound 异常,但有没有办法以合法的方式删除警告
Classpath entry D:/Users/myUser/Documents/NetBeansProjects/ImportClassesFromWSDL/dist/ImportClassesFromWSDL.jar will not be exported or published. Runtime ClassNotFoundExceptions may result. WSproject P/WSproject Classpath Dependency Validator Message? nad 其他问题如果 wsdl 中有新的方法或类会发生什么?以这种方式这样做是没有办法更新我的 JAR 对吗?我是否应该将此视为临时解决方案并尝试使用 maven-plug 来完成 -
我建议您使用
maven-jaxb2-plugin,这样当您的 WSDL 发生更改时,所有更改都会在您进行新的 maven 构建时被拾取。它将首先从 WSDL 构建您更新的源文件,然后将它们添加到您的src目录。检查插件配置选项here -
@Arkantos 我在第一个地方尝试,但我有这个问题stackoverflow.com/questions/28728528/… 我的错误是在我更新我的 maven pom.xml 后没有任何事情发生,我的课程没有被创建
-
我发布了我对该问题的答案,应该可以解决生成源的问题。有关
maven-jaxb2-plugin可能配置的更多信息,请查看此cheat sheet
标签: java eclipse spring web-services netbeans