java - ClassNotFoundException(Apache CXF Web 服务)

标签 java maven web-services cxf cxfrs

我正在尝试运行我在 Apache CXF 中编码的 Web 服务。我不断收到此错误:

Stacktrace:] with root cause
java.lang.ClassNotFoundException: org.apache.cxf.message.Message
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)

我已将 cxf-core Artifact 添加到我的 pom 文件中,而且我还可以看到它包含在 WAR 文件中。还有实际上抛出异常的 JAR。引发异常的代码部分是:

getBindingProvider().getRequestContext().put(BindingProviderProperties.CONNECT_TIMEOUT, connectTimeout);
    getBindingProvider().getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endPointUrl);
    getBindingProvider().getRequestContext().put("com.sun.xml.internal.ws.request.timeout", 3720000);

    Map<String, List<String>> headers = new HashMap<String, List<String>>();

    headers.put("Content-Type", Collections.singletonList("application/soap+xml"));
    headers.put(Message.CONTENT_TRANSFER_ENCODING, Collections.singletonList("UTF-8"));
    headers.put(Message.ENCODING, Collections.singletonList("UTF-8"));

    getBindingProvider().getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS, headers);

我做错了什么吗?

我正在使用 maven-jar-plugin 构建它,如下所示:

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <inherited>true</inherited>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <addDefaultEntries>true</addDefaultEntries>
                        <addBuildEnvironmentEntries>true</addBuildEnvironmentEntries>
                        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                        <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                        <classpathPrefix>lib/</classpathPrefix>
                    </manifest>
                </archive>
                <attachClasses>true</attachClasses>
                <includeEmptyDirectories>true</includeEmptyDirectories>
                <outputDirectory>${project.basedir}/target/</outputDirectory>
            </configuration>
        </plugin>

最佳答案

你运行得怎么样?如果运行包含 cxf jar 文件的 war 文件,其中包含 Message 类,则它不应该抛出 classcast 异常。除非你有冲突的依赖关系。或者类加载器出了问题。

检查冲突的 jar。在 intellij 中,它们标记在屏幕右侧。 Eclipse 有类似的东西。

关于java - ClassNotFoundException(Apache CXF Web 服务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60436523/

相关文章:

java - 将完成的 Web 服务集成到 Android 应用程序中

linux - 如果使用 php nusoap 在 WSDL 中未定义操作,如何修复

java - ProcessBuilder.start() 是如何工作的

java - 如何在 Android 中使用带有 if-else 语句的 boolean 值显示我的 TextView?

Java TL1协议(protocol)

java - 在动态 Web 项目中使用 m2e 插件

java - minify-maven-plugin cssFinalFile 在哪里?

java - Maven 资源自定义文件路径

asp.net - 通过 jQuery 调用 ASP.NET 服务器端方法

java - 有关如何从头开始设置非常简单的 J2EE Web 应用程序的教程?