2017-02-22 189 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