2017-02-22 179 views
2

我想通过Rest-Api在java中连接到我的jira实例。这就是为什么我首先实现与主机的连接。Jira Rest Java客户端

我读了很多教程,我发现JRJC。但没有任何工作。

*更新

package com.jira.main; 

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

    import com.atlassian.jira.rest.client.JiraRestClient; 
    import com.atlassian.jira.rest.client.JiraRestClientFactory; 
    import com.atlassian.jira.rest.client.domain.Issue; 
    import com.atlassian.jira.rest.client.domain.User; 
    import com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory; 
    import com.atlassian.util.concurrent.Promise; 



public class App 
{ 

    private static URI uri = URI.create("http://localhost:8080/jira"); 

    public static void main(String[] args) throws URISyntaxException 
    { 

     // Construct the JRJC client 
     System.out.println(String.format("Logging in to %s with username '%s' and password '%s'", "http://localhost:8080/", "bwanke", "Jako2014W!")); 
     final AsynchronousJiraRestClientFactory factory = new AsynchronousJiraRestClientFactory(); 
     final com.atlassian.jira.rest.client.api.JiraRestClient client = factory.createWithBasicHttpAuthentication(uri, "bwanke", "Jako2014!"); 


     // Invoke the JRJC Client 
     Promise<com.atlassian.jira.rest.client.api.domain.User> promise = client.getUserClient().getUser("bwanke"); 
     com.atlassian.jira.rest.client.api.domain.User user = promise.claim(); 


     Promise<com.atlassian.jira.rest.client.api.domain.Issue> promiseIssue = client.getIssueClient().getIssue("TEST-1"); 
     com.atlassian.jira.rest.client.api.domain.Issue issue = promiseIssue.claim(); 

     // Print the result 
     System.out.println(String.format("Your admin user's email address is: %s\r\n", user.getEmailAddress())); 

     // Print the result 
     System.out.println("some TEST-1 details " + issue.getAssignee() + " " + issue.getSummary() + " " + issue.getWorklogs()); 
     // Done 
     System.out.println("Example complete. Now exiting."); 
     System.exit(0); 




    } 
} 

我试图导入以下库:JIRA休息-Java的客户端-2.0.0-m2.jar,JIRA休息-Java的客户端 - 3.0.0.jar和jira-rest-java-client-4.0.0.jar

但是我仍然有一个问题。他无法找到无极

这一部分:

// Invoke the JRJC Client 
Promise<User> promise = client.getUserClient().getUser("ezizconduct"); 
User user = promise.claim(); 


Promise<Issue> promiseIssue = client.getIssueClient().getIssue("TEST-1"); 
Issue issue = promiseIssue.claim(); 

唯一的例外是:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    Promise cannot be resolved to a type 
    The type com.atlassian.util.concurrent.Promise cannot be resolved. It is indirectly referenced from required .class files 
    The method getUser(String) from the type UserRestClient refers to the missing type Promise 
    Promise cannot be resolved to a type 
    The method getIssue(String) from the type IssueRestClient refers to the missing type Promise 

    at com.jira.main.main(main.java:23) 

有没有人有一个想法?

。 。 。

----------------更新 - 与Maven尝试-------------------

  • 我创建了一个新的Maven - 项目
  • 原型:Maven的原型 - 快速入门1.1
  • groupId和工件ID

然后,我有Eclipse的一个新项目。我将我的旧代码从上面复制到新项目中。然后我复制了从属关系:https://github.com/eziztm/jira_rest_api_test/blob/master/pom.xml

我不导入任何库,但他没有对任何类进行regonize。

我Poem.xml现在是:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.jira</groupId> 
    <artifactId>main</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>main</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 

     <dependency> 
      <groupId>com.atlassian.fugue</groupId> 
      <artifactId>fugue</artifactId> 
      <version>2.6.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-simple</artifactId> 
      <version>1.6.4</version> 
     </dependency> 
     <dependency> 
      <groupId>com.atlassian.jira</groupId> 
      <artifactId>jira-rest-java-client-api</artifactId> 
      <version>4.0.0</version> 
      <exclusions> 
       <exclusion> 
        <groupId>stax</groupId> 
        <artifactId>stax-api</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <!-- JRJC is distributed under the Apache 2.0 license. --> 
      <groupId>com.atlassian.jira</groupId> 
      <artifactId>jira-rest-java-client-core</artifactId> 
      <version>4.0.0</version> 
     </dependency> 






    </dependencies> 


     <repositories> 
     <repository> 
      <id>atlassian-public</id> 
      <url>https://m2proxy.atlassian.com/repository/public</url> 
      <snapshots> 
       <enabled>true</enabled> 
       <updatePolicy>daily</updatePolicy> 
       <checksumPolicy>warn</checksumPolicy> 
      </snapshots> 
      <releases> 
       <enabled>true</enabled> 
       <checksumPolicy>warn</checksumPolicy> 
      </releases> 
     </repository> 
    </repositories> 


</project> 

回答

2

类型com.atlassian.util.concurrent.Promise不能得到解决。它是从所需的.class文件间接引用的。

您需要提供在运行时需要的com.atlassian.util.concurrent.Promise的传递依赖关系。添加以下依赖到您的POM将解决报告的问题。

<dependency> 
<groupId>com.atlassian.util.concurrent</groupId> 
<artifactId>atlassian-util-concurrent</artifactId> 
<version>2.6.2</version> 
</dependency> 
+0

好的,我更新了我的文章的内容。这是正确的方式吗? – InfoEngi