**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
14天前关门了。
改进这个问题
我想将此依赖项添加到maven pom.xml:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.17</version>
</dependency>
当我重新启动应用程序时,它会给出lazyreference$initializationexception。我猜这是因为现有的com.sun.jersey库版本不同,范围为“provided”。但我需要用那个版本。如何配置pom以无一例外地使用我的版本?
这是堆栈跟踪:
2020-12-26 18:31:54,089 http-nio-2990-exec-7 ERROR admin 1111x4891x1 4qsfr0 0:0:0:0:0:0:0:1 /rest/myrestresource/1.0/message/ [c.a.plugin.servlet.DefaultServletModuleManager] Unable to create new reference LazyLoadedFilterReference{descriptor=com.stack.app.stackOverflow:my-rest-resource-filter (The My Rest Resource Plugin), filterConfig=com.atlassian.plugin.servlet.filter.PluginFilterConfig@1c9a5ba0}
com.atlassian.util.concurrent.LazyReference$InitializationException: com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.
at com.atlassian.util.concurrent.LazyReference.getInterruptibly(LazyReference.java:149)
at com.atlassian.util.concurrent.LazyReference.get(LazyReference.java:112)
at com.atlassian.plugin.servlet.DefaultServletModuleManager.getInstance(DefaultServletModuleManager.java:447)
at com.atlassian.plugin.servlet.DefaultServletModuleManager.getFilter(DefaultServletModuleManager.java:440)
at com.atlassian.plugin.servlet.DefaultServletModuleManager.getFilters(DefaultServletModuleManager.java:300)
at com.atlassian.plugins.rest.module.servlet.DefaultRestServletModuleManager.getFilters(DefaultRestServletModuleManager.java:121)
... 39 filtered
at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21)
... 24 filtered
at com.atlassian.labs.httpservice.resource.ResourceFilter.doFilter(ResourceFilter.java:59)
... 32 filtered
at com.atlassian.jira.security.JiraSecurityFilter.lambda$doFilter$0(JiraSecurityFilter.java:66)
... 1 filtered
at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:64)
... 16 filtered
at com.atlassian.plugins.rest.module.servlet.RestSeraphFilter.doFilter(RestSeraphFilter.java:37)
... 19 filtered
at com.atlassian.jira.servermetrics.CorrelationIdPopulatorFilter.doFilter(CorrelationIdPopulatorFilter.java:30)
... 10 filtered
at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21)
... 4 filtered
at com.atlassian.web.servlet.plugin.LocationCleanerFilter.doFilter(LocationCleanerFilter.java:36)
... 26 filtered
at com.atlassian.jira.servermetrics.MetricsCollectorFilter.doFilter(MetricsCollectorFilter.java:25)
... 24 filtered
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.
at com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:99)
at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1359)
at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:180)
at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:799)
at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:795)
... 1 filtered
at com.atlassian.plugins.rest.module.RestDelegatingServletFilter$JerseyOsgiServletContainer.initiate(RestDelegatingServletFilter.java:159)
... 5 filtered
at com.atlassian.plugins.rest.module.RestDelegatingServletFilter.initServletContainer(RestDelegatingServletFilter.java:88)
at com.atlassian.plugins.rest.module.RestDelegatingServletFilter.init(RestDelegatingServletFilter.java:61)
... 1 filtered
at com.atlassian.plugin.servlet.DefaultServletModuleManager$LazyLoadedFilterReference.create(DefaultServletModuleManager.java:516)
at com.atlassian.plugin.servlet.DefaultServletModuleManager$LazyLoadedFilterReference.create(DefaultServletModuleManager.java:503)
at com.atlassian.util.concurrent.LazyReference$Sync.run(LazyReference.java:325)
at com.atlassian.util.concurrent.LazyReference.getInterruptibly(LazyReference.java:143)
... 213 more
顺便说一下,这个应用程序是一个atlassian jira服务器插件,但我希望我能从maven用户那里得到一些帮助。
这个问题很容易重复。要复制它,可以创建一个新的jira插件,添加一个rest插件模块,然后将上面的依赖项添加到pom.xml中。在运行mvn包之后,出现了这个问题。
这也是我添加依赖项并发生错误后的依赖项树:
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ stackOverflow ---
[INFO] com.stack.app:stackOverflow:atlassian-plugin:1.0.0-SNAPSHOT
[INFO] +- com.atlassian.jira:jira-api:jar:7.13.0:provided
[INFO] | +- com.atlassian.annotations:atlassian-annotations:jar:1.1.0:provided
[INFO] | | \- com.google.code.findbugs:jsr305:jar:3.0.0:provided
[INFO] | +- com.atlassian.ofbiz:entityengine-share:jar:1.3.10:provided
[INFO] | | \- xerces:xercesImpl:jar:2.4.0:provided
[INFO] | +- com.atlassian.ofbiz:entityengine:jar:1.3.10:provided
[INFO] | | \- jta:jta:jar:1.0.1:provided
[INFO] | +- com.atlassian.collectors:atlassian-collectors-util:jar:1.1:provided
[INFO] | +- opensymphony:webwork:jar:1.4-atlassian-30:provided
[INFO] | | \- com.atlassian.html:atlassian-html-encoder:jar:1.4:provided
[INFO] | +- webwork:pell-multipart-request:jar:1.31.0:provided
[INFO] | +- com.atlassian.core:atlassian-core:jar:5.0.9:provided
[INFO] | | +- commons-collections:commons-collections:jar:3.1:provided
[INFO] | | +- dom4j:dom4j:jar:1.4:provided
[INFO] | | | +- xml-apis:xml-apis:jar:1.0.b2:provided
[INFO] | | | +- jaxen:jaxen:jar:1.0-FCS:provided
[INFO] | | | +- saxpath:saxpath:jar:1.0-FCS:provided
[INFO] | | | +- msv:msv:jar:20020414:provided
[INFO] | | | +- relaxngDatatype:relaxngDatatype:jar:20020414:provided
[INFO] | | | \- isorelax:isorelax:jar:20020414:provided
[INFO] | | \- com.atlassian.image:atlassian-image-consumer:jar:1.0.1:provided
[INFO] | +- com.atlassian.core:atlassian-core-user:jar:5.0.9:provided
[INFO] | +- com.atlassian.core:atlassian-core-thumbnail:jar:5.0.9:provided
[INFO] | | +- com.twelvemonkeys.imageio:imageio-jpeg:jar:3.2:provided
[INFO] | | | +- com.twelvemonkeys.imageio:imageio-core:jar:3.2:provided
[INFO] | | | +- com.twelvemonkeys.imageio:imageio-metadata:jar:3.2:provided
[INFO] | | | +- com.twelvemonkeys.common:common-lang:jar:3.2:provided
[INFO] | | | +- com.twelvemonkeys.common:common-io:jar:3.2:provided
[INFO] | | | \- com.twelvemonkeys.common:common-image:jar:3.2:provided
[INFO] | | \- com.twelvemonkeys.imageio:imageio-tiff:jar:3.2:provided
[INFO] | +- com.atlassian.extras:atlassian-extras:jar:3.2:provided
[INFO] | | \- commons-codec:commons-codec:jar:1.3:provided
[INFO] | +- com.atlassian.velocity:atlassian-velocity:jar:1.3:provided
[INFO] | | +- opensymphony:oscore:jar:2.2.7:provided
[INFO] | | \- org.apache.velocity:velocity:jar:1.6.4:provided
[INFO] | +- osworkflow:osworkflow:jar:2.9.0-atlassian-1:provided
[INFO] | +- opensymphony:propertyset:jar:1.5:provided
[INFO] | +- com.atlassian.cache:atlassian-cache-api:jar:3.2.0:provided
[INFO] | | +- com.atlassian.util.concurrent:atlassian-util-concurrent:jar:0.0.12:provided
[INFO] | | \- com.atlassian.instrumentation:atlassian-instrumentation-core:jar:2.2.2:provided
[INFO] | +- com.atlassian.beehive:beehive-api:jar:1.3.0:provided
[INFO] | +- com.atlassian.tenancy:atlassian-tenancy-api:jar:1.4.0:provided
[INFO] | | \- com.atlassian.event:atlassian-event:jar:2.3.2:provided
[INFO] | +- com.atlassian.upgrade:upgrade-task-framework-api:jar:2.0.2:provided
[INFO] | +- com.atlassian.crowd:embedded-crowd-api:jar:2.10.4:provided
[INFO] | +- com.google.guava:guava:jar:18.0:provided
[INFO] | +- com.atlassian.fugue:fugue:jar:2.6.0:provided
[INFO] | +- org.codehaus.jackson:jackson-core-asl:jar:1.9.13-atlassian-1:provided
[INFO] | +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.13-atlassian-1:provided
[INFO] | +- javax.mail:javax.mail-api:jar:1.6.0:provided
[INFO] | +- com.sun.mail:javax.mail:jar:1.6.0:provided
[INFO] | +- com.atlassian.mail:atlassian-mail:jar:2.8.6:provided
[INFO] | | +- commons-beanutils:commons-beanutils:jar:1.6.1:provided
[INFO] | | \- commons-digester:commons-digester:jar:1.4.1:provided
[INFO] | +- oro:oro:jar:2.0.7:provided
[INFO] | +- com.atlassian.threadlocal:atlassian-threadlocal:jar:1.3:provided
[INFO] | +- com.atlassian.applinks:applinks-api:jar:5.4.5:provided
[INFO] | +- com.google.javascript:closure-compiler:jar:v20151216:provided
[INFO] | +- com.atlassian.velocity.htmlsafe:velocity-htmlsafe:jar:1.4:provided
[INFO] | | \- commons-pool:commons-pool:jar:1.5.4:provided
[INFO] | +- com.atlassian.plugins:atlassian-plugins-api:jar:4.5.1:provided
[INFO] | +- com.atlassian.plugins:atlassian-plugins-webfragment:jar:4.1.0:provided
[INFO] | +- com.atlassian.plugins:atlassian-plugins-webfragment-api:jar:4.1.0:provided
[INFO] | +- com.atlassian.ozymandias:atlassian-plugin-point-safety:jar:0.10:provided
[INFO] | +- jfree:jfreechart:jar:1.0.13:provided
[INFO] | +- com.atlassian.plugins:atlassian-plugins-webresource:jar:3.5.41:provided
[INFO] | | +- com.atlassian.plugins:atlassian-plugins-webresource-spi:jar:3.5.41:provided
[INFO] | | +- com.atlassian.plugins:atlassian-plugins-webresource-api:jar:3.5.41:provided
[INFO] | | +- org.tuckey:urlrewritefilter:jar:4.0.4:provided
[INFO] | | \- com.atlassian.sourcemap:sourcemap:jar:1.7.6:provided
[INFO] | +- com.atlassian.plugins:atlassian-plugins-webresource-compiler-gcc:jar:3.5.41:provided
[INFO] | +- jfree:jcommon:jar:1.0.8:provided
[INFO] | +- com.atlassian.gadgets:atlassian-gadgets-api:jar:4.2.32:provided
[INFO] | +- com.atlassian.johnson:atlassian-johnson-core:jar:3.4.0:provided
[INFO] | | \- com.atlassian.plugins:atlassian-plugins-servlet:jar:3.2.8:provided
[INFO] | +- joda-time:joda-time:jar:2.8.2:provided
[INFO] | +- commons-lang:commons-lang:jar:2.6:provided
[INFO] | +- org.apache.commons:commons-lang3:jar:3.3.2:provided
[INFO] | +- commons-io:commons-io:jar:2.1:provided
[INFO] | +- commons-httpclient:commons-httpclient:jar:3.1-atlassian-2:provided
[INFO] | +- log4j:log4j:jar:1.2.16:provided
[INFO] | +- org.slf4j:slf4j-api:jar:1.7.9:provided
[INFO] | +- com.atlassian.profiling:atlassian-profiling:jar:1.9:provided
[INFO] | +- com.atlassian.scheduler:atlassian-scheduler-api:jar:1.7.0:provided
[INFO] | +- com.atlassian.analytics:analytics-api:jar:5.6.2:provided
[INFO] | +- javax.servlet:javax.servlet-api:jar:3.0.1:provided
[INFO] | +- com.atlassian.application:atlassian-application-api:jar:1.2:provided
[INFO] | \- javax.validation:validation-api:jar:1.1.0.Final:provided
[INFO] +- junit:junit:jar:4.10:test
[INFO] | \- org.hamcrest:hamcrest-core:jar:1.1:test
[INFO] +- com.atlassian.plugin:atlassian-spring-scanner-annotation:jar:1.2.13:provided
[INFO] +- javax.inject:javax.inject:jar:1:provided
[INFO] +- com.atlassian.plugins:atlassian-plugins-osgi-testrunner:jar:2.0.1:test
[INFO] | \- com.atlassian.upm:upm-api:jar:2.15:test
[INFO] +- javax.ws.rs:jsr311-api:jar:1.1.1:provided
[INFO] +- com.google.code.gson:gson:jar:2.2.2-atlassian-1:compile
[INFO] +- javax.servlet:servlet-api:jar:2.4:provided
[INFO] +- javax.xml.bind:jaxb-api:jar:2.3.1:provided
[INFO] | \- javax.activation:javax.activation-api:jar:1.2.0:provided
[INFO] +- com.atlassian.plugins.rest:atlassian-rest-common:jar:1.0.2:provided
[INFO] | +- com.atlassian.plugins.rest:com.atlassian.jersey-library:pom:1.0.2:provided
[INFO] | | +- com.sun.jersey:jersey-server:jar:1.0.3:provided
[INFO] | | | \- asm:asm:jar:3.1:provided
[INFO] | | +- com.sun.jersey:jersey-json:jar:1.0.3:provided
[INFO] | | | +- org.codehaus.jettison:jettison:jar:1.0.1:provided
[INFO] | | | \- org.codehaus.jackson:jackson-asl:jar:0.9.4:provided
[INFO] | | \- commons-fileupload:commons-fileupload:jar:1.2.1:provided
[INFO] | \- net.sourceforge.findbugs:jsr305:jar:1.3.2:provided
[INFO] +- com.atlassian.sal:sal-api:jar:2.6.0:provided
[INFO] +- org.apache.wink:wink-client:jar:1.4:test
[INFO] | +- org.apache.wink:wink-common:jar:1.4:test
[INFO] | | +- org.apache.geronimo.specs:geronimo-jaxrs_1.1_spec:jar:1.0:test
[INFO] | | \- org.apache.geronimo.specs:geronimo-annotation_1.1_spec:jar:1.0:test
[INFO] | +- com.sun.xml.bind:jaxb-impl:jar:2.2.1.1:provided
[INFO] | \- javax.activation:activation:jar:1.1:provided
[INFO] +- org.mockito:mockito-all:jar:1.8.5:test
[INFO] \- com.sun.jersey:jersey-client:jar:1.17:compile
[INFO] \- com.sun.jersey:jersey-core:jar:1.17:compile
与rest模块相关的类如下,我没有添加任何内容,这些是创建rest模块时的默认类:
package com.stack.app.rest;
import javax.xml.bind.annotation.*;
@XmlRootElement(name = "message")
@XmlAccessorType(XmlAccessType.FIELD)
public class MyRestResourceModel {
@XmlElement(name = "value")
private String message;
public MyRestResourceModel() {
}
public MyRestResourceModel(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
这就是资源:
package com.stack.app.rest;
import com.atlassian.plugins.rest.common.security.AnonymousAllowed;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
/**
* A resource of message.
*/
@Path("/message")
public class MyRestResource {
@GET
@AnonymousAllowed
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response getMessage()
{
return Response.ok(new MyRestResourceModel("Hello World")).build();
}
}
atlassian-plugin.xml中的rest模块添加如下:
<rest name="My Rest Resource" i18n-name-key="my-rest-resource.name" key="my-rest-resource" path="/myrestresource" version="1.0">
<description key="my-rest-resource.description">The My Rest Resource Plugin</description>
</rest>
我将用于添加库的方法:
@POST
@Path("/sendFile")
@AnonymousAllowed
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
public Response sendFile(RestAsanModel msg) throws FileNotFoundException, MessagingException {
Attachment at = ComponentAccessor.getAttachmentManager().getAttachment(Long.parseLong(msg.getMessage()));
File file = getAttachmentFile(at).getAbsoluteFile();
final ClientConfig config = new DefaultClientConfig();
final Client client = Client.create(config);
final WebResource resource = client.resource("http://localhost:8888/MyApi/receiveFile");
final MimeMultipart request = new MimeMultipart();
request.addBodyPart(new MimeBodyPart(new FileInputStream(file)));
final String response = resource
.entity(request, "multipart/form-data")
.accept("text/plain")
.post(String.class);
return Response.ok(response).build();
}
谢谢你的帮助
暂无答案!
目前还没有任何答案,快来回答吧!