繁体   English   中英

Atlassian JIRA Java REST API 赋格问题

[英]Atlassian JIRA Java REST API Fugue problem

我想使用一个简单的 Java 程序从 JIRA 服务器获取数据。

在尝试了很多不同的解决方案之后,我在我的 POM 中得到了这个。

<repositories>
    <repository>
        <id>atlassian-public</id>
        <url>https://packages.atlassian.com/maven/repository/public</url>
    </repository>
    <repository>
        <id>atlassian-public</id>
        <url>https://mvnrepository.cpm/artifact/com.atlassian.fugue/fugue</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.atlassian.jira</groupId>
        <artifactId>jira-rest-java-client-core</artifactId>
        <version>5.2.0</version>
    </dependency>
    <dependency>
        <groupId>io.atlassian.fugue</groupId>
        <artifactId>fugue</artifactId>
        <version>4.7.2</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

我的项目已构建,但是当我运行它时,我得到了下面的问题描述。 我相信简单的记录器是一个警告,但是我应该怎么做才能在运行时找到 io.atlassian.fugue?

最好的 rgds,

尼克拉斯

SLF4J:无法加载 class“org.slf4j.impl.StaticLoggerBinder”。 SLF4J:默认为无操作 (NOP) 记录器实现 SLF4J:有关详细信息,请参阅http://www.slf4j.org/codes.html#StaticLoggerBinder Exception in thread "main" java.lang.NoClassDefFoundError: io/atlassian/fugue/Suppliers at com.atlassian.httpclient.apache.httpcomponents.ApacheAsyncHttpClient.(ApacheAsyncHttpClient.java:80) at com.atlassian.httpclient.apache.httpcomponents. DefaultHttpClientFactory.doCreate(DefaultHttpClientFactory.java:61) at com.atlassian.httpclient.apache.httpcomponents.DefaultHttpClientFactory.create(DefaultHttpClientFactory.java:36) at com.atlassian.jira.rest.client.internal.async.AsynchronousHttpClientFactory.createClient( AsynchronousHttpClientFactory.java:65) at com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory.create(AsynchronousJiraRestClientFactory.java:36) at com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory.createWithAuthenticationHandler(异步Jir aRestClientFactory.java:47) at MyJiraClient.getJiraRestClient(MyJiraClient.java:44) at MyJiraClient.(MyJiraClient.java:27) at MyJiraClient.main(MyJiraClient.java:31) Caused by: java.lang.ClassNotFoundException: io.atlassian .fugue.Suppliers at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java .base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)... 9 更多

这可能是jira-rest-java-client-core (JRJC) 和io.atlassian.fugue版本不能一起工作的问题。 JRJC 需要 fugue,但您需要将正确版本的 fugue 与给定版本的 JRJC 一起使用。

我也为此苦苦挣扎,但除了尝试(和失败)之外,我还没有找到任何地方/任何方法来确定哪个赋格版本实际上适用于最新的 JRJC 版本。 我在Baeldung上做了一个例子,但是那里使用的 JRJC 版本是旧的(4.0.0)所以我想使用更新的东西。

通过反复试验,我发现这些版本可以很好地协同工作,但是 JRJC 版本不是最新的,但是:

<dependency>
    <groupId>com.atlassian.jira</groupId>
    <artifactId>jira-rest-java-client-core</artifactId>
    <version>5.1.0</version>
</dependency>

<dependency>
    <groupId>io.atlassian.fugue</groupId>
    <artifactId>fugue</artifactId>
    <version>4.7.2</version>
</dependency>

另请注意(如 Baeldung 示例中所示)一个带有 groupId com .atlassian.fugue 的赋格神器(而不是io .atlassian.fugue)。

首先,SLF4J: Failed to load class 警告,我认为与您的主要错误不同,您可以清除或修复警告,添加 SLF4J Bridge maven 依赖项:

 <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.13.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.13.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.13.3</version>
    </dependency>
 

稍后您可以分析其他根本问题。

虽然使用 java jira 客户端非常简单,但奇怪的是版本兼容性不可用。

对于所有使用spring-cloud-starter.netflix-eureka-client依赖项的人,我想分享我的发现。

我的微服务通过以下依赖项编译和运行良好:

    <dependency>
        <groupId>com.atlassian.jira</groupId>
        <artifactId>jira-rest-java-client-core</artifactId>
        <version>5.2.4</version>
    </dependency>
    <dependency>
        <groupId>io.atlassian.fugue</groupId>
        <artifactId>fugue</artifactId>
        <version>5.0.0</version>
    </dependency>

但是在尝试使用 java jira 客户端时抛出以下异常:

java.lang.ClassNotFoundException: com.sun.ws.rs.ext.RuntimeDelegateImpl

挖掘之后,我意识到它正在尝试访问来自 spring 引导尤里卡客户端的旧版本的jsr311-api

我排除了它

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        <exclusions>
            <exclusion>
                <groupId>javax.ws.rs</groupId>
                <artifactId>jsr311-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

现在它运行良好。 希望这会对某人有所帮助:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM