Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 未找到多部分功能的注入源_Maven_Jersey_Glassfish_Jersey 2.0_Multipart - Fatal编程技术网

Maven 未找到多部分功能的注入源

Maven 未找到多部分功能的注入源,maven,jersey,glassfish,jersey-2.0,multipart,Maven,Jersey,Glassfish,Jersey 2.0,Multipart,当我尝试将maven项目部署到Glassfish 5时,出现以下错误: [[FATAL]在索引0处找不到public javax.ws.rs.core.Response com.test.Resources.AccountResource.addProfilePicture(java.io.InputStream,org.glassfish.jersey.media.multipart.FormDataContentDisposition)类型的参数的注入源;source='ResourceMe

当我尝试将maven项目部署到Glassfish 5时,出现以下错误:

[[FATAL]在索引0处找不到public javax.ws.rs.core.Response com.test.Resources.AccountResource.addProfilePicture(java.io.InputStream,org.glassfish.jersey.media.multipart.FormDataContentDisposition)类型的参数的注入源;source='ResourceMethod{httpMethod=POST,consumedTypes=[multipart/form data],producedTypes=[],suspended=false,suspendTimeout=0,suspendTimeoutUnit=毫秒,invocable=invocable{handler=ClassBasedMethodHandler{handlerClass=class com.test.Resources.AccountResource,handlerConstructors=[org.glassfish.jersey.server.model。HandlerConstructor@1efcbc1f]},definitionMethod=public javax.ws.rs.core.Response com.test.Resources.AccountResource.addProfilePicture(java.io.InputStream,org.glassfish.jersey.media.multipart.FormDataContentDisposition),参数=[Parameter[type=class java.io.InputStream,source=profilePicture,defaultValue=null],参数[type=class org.glassfish.jersey.media.multipart.FormDataContentDisposition,source=profilePicture,defaultValue=null]],responseType=class javax.ws.rs.core.Response},nameBindings=[]}']。有关详细信息,请参阅server.log

这是导致故障的代码:

@POST
@路径(“addProfilePicture”)
@使用(MediaType.MULTIPART\u FORM\u数据)
公共响应addProfilePicture(@FormDataParam(“profilePicture”)InputStream pic,
@FormDataParam(“profilePicture”)FormDataContentDisposition FormDataContentDisposition){
返回Response.ok().build();
}
my web.xml

<servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.test</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
以下是我的maven依赖项:

<dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.inject</groupId>
        <artifactId>jersey-hk2</artifactId>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.11</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-multipart</artifactId>
        <version>${jersey.version}</version>
    </dependency>
</dependencies>

org.glassfish.jersey.containers
jersey容器servlet核心
org.glassfish.jersey.inject
泽西-hk2
javax.servlet
servlet api
2.5
mysql
mysql连接器java
8.0.11
org.glassfish.jersey.media
泽西岛媒体多部分
${jersey.version}

我已经尝试将
范围
更改为
提供的
,并使用
资源配置
,而不是
应用程序
,,所以问题是这样的。您有两种不同的应用程序配置:web.xml和
应用程序配置
类。它们是完全独立的配置,它们是both本身是有效的。
ApplicationConfig
类是注册
MultiPartFeature
的类,但似乎正在使用的配置是web.xml。我从未真正测试过当您有两个不同的应用程序配置时会发生什么,但似乎您的web.xml优先。我在web.xml中,您没有配置
多部件功能

如果您只想使用
web.xml
,那么您可以查看out如何配置它

但是,您可以只删除整个web.xml。这将导致
ApplicationConfig
将其删除。但请注意两个区别:
ApplicationConfig
上的
@ApplicationPath
与web.xml中的
url映射类似。因此,如果您删除web.xml,则基本路径将是
//code>(或无)而不是像web.xml中那样的
/webapi


如果你决定删除web.xml,我建议你使用
ResourceConfig
而不是
Application
。你可以在这篇文章中获得一些关于这个类和不同配置可能性的好信息,我删除了web.xml,它可以正常工作。谢谢Paul,我真的很感谢你的帮助:)@JakobHerk不用担心,很高兴to帮助。还有其他几点提示:1)所有Jersey和(Servlet)依赖项都应该在提供的范围内,因为Glassfish已经有了它们。2)您正在使用一个非常旧的Servlet API版本,应该升级它。我认为应该是。但它仍然应该是一个提供的范围