我通过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插件来计算自动化过程。
答案 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>