java - 当 Java 作为 Web 应用程序运行时,Jira 显示 NoSuchMethodError,但在 main 中运行时获取输出

标签 java tomcat jira nosuchmethoderror jira-rest-java-api

我正在创建一个 Java Web 应用程序。我添加了 Jira API jar 用于连接到 Jira 以获取在 Jira 中创建的问题。

这是我的 Java 程序来解决问题

import java.net.URI;
import java.net.URISyntaxException;

import com.atlassian.jira.rest.client.JiraRestClient;
import com.atlassian.jira.rest.client.NullProgressMonitor;
import com.atlassian.jira.rest.client.domain.Issue;
import com.atlassian.jira.rest.client.internal.jersey.JerseyJiraRestClientFactory;

public class AppJIRADataCollector {

    final static JerseyJiraRestClientFactory factory = new JerseyJiraRestClientFactory();
    public static void main(String args[])
    {
        AppJIRADataCollector appJira=new AppJIRADataCollector();
        appJira.getIssues("http://localhost:8080/", "AP-1", "admin", "admin");
    }

    public void getIssues(String issueURI,String issueKey,String username, String password) {

        try {
            final URI jiraServerUri = new URI(issueURI);
            final JiraRestClient restClient = factory.createWithBasicHttpAuthentication(jiraServerUri,username, password);
            System.out.println(restClient);
            final NullProgressMonitor pm = new NullProgressMonitor();
            final Issue issue = restClient.getIssueClient()
                    .getIssue(issueKey, pm);

            System.out.println(issue);
        } catch (URISyntaxException e) {
            System.out.println("URI not found");
            e.printStackTrace();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

当我运行这个程序时,我在打印问题时得到了正确的输出。

但是当我将其作为 Web 应用程序运行,并从 servlet 调用 getIssues() 方法时,tomcat 显示 NoSuchMethodError

这是堆栈跟踪

java.lang.NoSuchMethodError: com.google.common.collect.Iterables.contains(Ljava/lang/Iterable;Ljava/lang/Object;)Z
    com.atlassian.jira.rest.client.internal.json.IssueJsonParser.parse(IssueJsonParser.java:216)
    com.atlassian.jira.rest.client.internal.json.IssueJsonParser.parse(IssueJsonParser.java:59)
    com.atlassian.jira.rest.client.internal.jersey.AbstractJerseyRestClient$1.call(AbstractJerseyRestClient.java:85)
    com.atlassian.jira.rest.client.internal.jersey.AbstractJerseyRestClient.invoke(AbstractJerseyRestClient.java:54)
    com.atlassian.jira.rest.client.internal.jersey.AbstractJerseyRestClient.getAndParse(AbstractJerseyRestClient.java:80)
    com.atlassian.jira.rest.client.internal.jersey.JerseyIssueRestClient.getIssue(JerseyIssueRestClient.java:131)
    com.atlassian.jira.rest.client.internal.jersey.JerseyIssueRestClient.getIssue(JerseyIssueRestClient.java:123)
    com.domain.jirademo.adapters.AppJIRADataCollector.getIssues(AppJIRADataCollector.java:22)
    com.domain.jirademo.controllers.ProjectDefectsServlet.doPost(ProjectDefectsServlet.java:50)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

为什么会发生这种情况? JAR 有问题吗?我正在使用maven。如果需要,我也会发布 pom

编辑

我后来才添加了 main 方法。所以在堆栈跟踪中,第 22 行指的是

final Issue issue = restClient.getIssueClient()
                        .getIssue(issueKey, pm);

最佳答案

NoSuchMethodError 这是由于版本不匹配引起的,您应该检查您的 guava 库的版本。

关于java - 当 Java 作为 Web 应用程序运行时,Jira 显示 NoSuchMethodError,但在 main 中运行时获取输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16411093/

相关文章:

java - 如何找出与 unix 进程 LWP 关联的进程/任务

jira - 通过 JIRA REST API 访问转换历史记录

jira - 我可以使用 JIRA 管理多个客户项目吗

java - admob,按一定时间间隔循环播放广告

java - 如何在 Glass Fish Server/Apache Tomcat 上部署 Rest Web 服务?

xml - JSP trimSpaces 指令不起作用!

java - 线程 "main"java.lang.NoClassDefFoundError : org/apache/qpid/url/URLSyntaxException 中的异常

java - Mockito.any() 通过泛型接口(interface)

java - 具有不同名称的Spring json map元素要列出

java - 在 Redis 中存储 Web Socket session