使用jersey-multipart-1.18.1缺少FormDataParam的依赖项

时间:2014-08-24 10:00:23

标签: java maven jersey multipart

我通过Jersey REST上传文件时遇到了这个可怕的问题(使用Dropwizard,但这并不重要)。 当我们使用Eclipse测试并运行它时,错误没有出现,但是当我们使用jar部署它时,无论我们更改了什么(除了完全删除上传方法),这都出现了。

SEVERE: Missing dependency for method public void com.zh.backend.rest.resources.FileManagerResource.uploadFile(com.zh.backend.beans.User,java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition) at parameter at index 0
SEVERE: Missing dependency for method public void com.zh.backend.rest.resources.FileManagerResource.uploadFile(com.zh.backend.beans.User,java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition) at parameter at index 1
SEVERE: Missing dependency for method public void com.zh.backend.rest.resources.FileManagerResource.uploadFile(com.zh.backend.beans.User,java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition) at parameter at index 2

那么我们发现这个话题https://java.net/projects/jersey/lists/users/archive/2010-09/message/267就足以知道在哪里搜索问题了 - jersey-core和jersey-multipart的合并并没有合并META-INF /服务文件,而不是用另一个文件覆盖。

如果您想解决问题,请将META-INF /服务中的相同名称文件从jersey-core和jersey-multipart手动合并到您的jar的META-INF /服务中,如果您碰巧拥有自己的注入提供程序,在META-INF / services中的自己的文件中指定它们(您可能必须创建这些文件)。我必须手动编辑从Maven生成的jar,但您可以使用Maven Shade插件来计算自动化过程。

1 个答案:

答案 0 :(得分:0)

这是Maven修复程序,可以使一切正常并自动

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer
                                implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                        </transformers>
                            <filters>
                                <filter>
                                      <artifact>*:*</artifact>
                                      <excludes>
                                        <exclude>META-INF/*.SF</exclude>
                                        <exclude>META-INF/*.DSA</exclude>
                                        <exclude>META-INF/*.RSA</exclude>
                                    </excludes>
                                </filter>
                            </filters>
                    </configuration>
                </execution>
            </executions>
        </plugin>