Hi All,
Hope that someone can help me out here.
In work we are using Jira version 6.17 and I'm trying to connect with it via the java rest client but I seem to be hitting some issues around connect to Jira.
Everytime I run my Java code I get the following error message:
Exception in thread "main" java.lang.IncompatibleClassChangeError: Class com.atlassian.jira.rest.client.auth.BasicHttpAuthenticationHandler does not implement the requested interface com.atlassian.jira.rest.client.AuthenticationHandler at com.atlassian.jira.rest.client.internal.jersey.JerseyJiraRestClient.<init>(JerseyJiraRestClient.java:58) at com.atlassian.jira.rest.client.internal.jersey.JerseyJiraRestClientFactory.create(JerseyJiraRestClientFactory.java:34) at com.atlassian.jira.rest.client.internal.jersey.JerseyJiraRestClientFactory.createWithBasicHttpAuthentication(JerseyJiraRestClientFactory.java:39) at com.hw.jira.transitionIssue.main(transitionIssue.java:29) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
So here is my Java Code:
package com.hw.jira; import com.atlassian.jira.rest.client.JiraRestClient; import com.atlassian.jira.rest.client.NullProgressMonitor; import com.atlassian.jira.rest.client.domain.*; import com.atlassian.jira.rest.client.domain.input.FieldInput; import com.atlassian.jira.rest.client.domain.input.TransitionInput; import com.atlassian.jira.rest.client.internal.jersey.JerseyJiraRestClientFactory; import com.google.api.client.http.HttpTransport; import java.net.URI; import java.net.URISyntaxException; import java.util.Arrays; import java.util.Collection; import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.LogRecord; import java.util.logging.Logger; /** * Created by Philip.Bannon on 15/04/2014. */ public class transitionIssue { public static void main(String args[]) throws URISyntaxException { final JerseyJiraRestClientFactory factory = new JerseyJiraRestClientFactory(); final URI jiraServerUri = new URI("https://jira.test.com"); final JiraRestClient restClient = factory.createWithBasicHttpAuthentication(jiraServerUri, "username", "xxxxx"); final NullProgressMonitor pm = new NullProgressMonitor(); final Issue issue = restClient.getIssueClient().getIssue("HWTA-374", pm); System.out.println(issue); // now let's vote for it restClient.getIssueClient().vote(issue.getVotesUri(), pm); // now let's watch it restClient.getIssueClient().watch(issue.getWatchers().getSelf(), pm); // now let's start progress on this issue final Iterable<Transition> transitions = restClient.getIssueClient().getTransitions(issue.getTransitionsUri(), pm); final Transition startProgressTransition = getTransitionByName(transitions, "Start Progress"); restClient.getIssueClient().transition(issue.getTransitionsUri(), new TransitionInput(startProgressTransition.getId()), pm); // and now let's resolve it as Incomplete final Transition resolveIssueTransition = getTransitionByName(transitions, "Resolve Issue"); Collection<FieldInput> fieldInputs = Arrays.asList(new FieldInput("resolution", "Incomplete")); final TransitionInput transitionInput = new TransitionInput(resolveIssueTransition.getId(), fieldInputs, Comment.valueOf("My comment")); restClient.getIssueClient().transition(issue.getTransitionsUri(), transitionInput, pm); } private static Transition getTransitionByName(Iterable<Transition> transitions, String transitionName) { for (Transition transition : transitions) { if (transition.getName().equals(transitionName)) { return transition; } } return null; } public static void enableLogging() { Logger logger = Logger.getLogger(HttpTransport.class.getName()); logger.setLevel(Level.CONFIG); logger.addHandler(new Handler() { @Override public void close() throws SecurityException { } @Override public void flush() { } @Override public void publish(LogRecord record) { // default ConsoleHandler will print >= INFO to System.err if (record.getLevel().intValue() < Level.INFO.intValue()) { System.out.println(record.getMessage()); } } }); } }
And here is my dependencies in the pom.xml
<?xml version="1.0" encoding="UTF-8"?> <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>groupId</groupId> <artifactId>jira-Plugins</artifactId> <version>2.0.0-m26</version> <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> <parent> <groupId>com.atlassian.jira</groupId> <artifactId>jira-rest-java-client-parent</artifactId> <version>2.0.0-m26</version> </parent> <pluginRepositories> <pluginRepository> <id>atlassian-public</id> <url>https://m2proxy.atlassian.com/repository/public</url> <releases> <enabled>true</enabled> <checksumPolicy>warn</checksumPolicy> </releases> <snapshots> <checksumPolicy>warn</checksumPolicy> </snapshots> </pluginRepository> </pluginRepositories> <dependencies> <dependency> <groupId>com.google.http-client</groupId> <artifactId>google-http-client</artifactId> <version>1.18.0-rc</version> </dependency> <dependency> <groupId>com.atlassian.jira</groupId> <artifactId>jira-rest-java-client-core</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-client</artifactId> <version>1.8-atlassian-11</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-json</artifactId> <version>1.8-atlassian-11</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-core</artifactId> <version>1.8-atlassian-11</version> </dependency> <dependency> <groupId>com.googlecode.json-simple</groupId> <artifactId>json-simple</artifactId> <version>1.1.1</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjtools</artifactId> <version>1.7.2</version> </dependency> <dependency> <groupId>com.atlassian.jira</groupId> <artifactId>jira-rest-java-client</artifactId> <version>0.2</version> </dependency> </dependencies>
Community moderators have prevented the ability to post new answers.
Hi philban,
I was trying to use the jira-rest-java-client and i'm following the tutorial here: https://ecosystem.atlassian.net/wiki/display/JRJC/Tutorial
...and I'm stuck on the very same issue
at com.atlassian.jira.rest.client.internal.jersey.JerseyJiraRestClient.<init>(JerseyJiraRestClient.java:63) at com.atlassian.jira.rest.client.internal.jersey.JerseyJiraRestClientFactory.create(JerseyJiraRestClientFactory.java:34) at com.atlassian.jira.rest.client.internal.jersey.JerseyJiraRestClientFactory.createWithBasicHttpAuthentication(JerseyJiraRestClientFactory.java:39)
I think there's some problem on dependancies but I cannot figure out which one...
Here the connection code for JIRA using JRJC version 2.0.0-m26
final AsynchronousJiraRestClientFactory factory = new AsynchronousJiraRestClientFactory(); final JiraRestClient restClient = factory.createWithBasicHttpAuthentication(jiraServerUri, "admin", "admin");
Hope it helps.
Vijay
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Saurabh,
I have done the few things with JRJC but not using maven. I saw your comment on the other question but was not able to reply till now. I will do that there also so other user see the comment.
May be this link helps to find the dependencies.
http://maven-repository.com/artifact/com.atlassian.jira/jira-rest-java-client-api/2.0.0-m25
Vijay.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I found another answer on the forum where there is some sample code and pom.xml
https://answers.atlassian.com/questions/194406/jira-rest-client-simple-example
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
I came across this test sample provided with the client source code
https://bitbucket.org/atlassian/jira-rest-java-client/src/75a64c9d81aad7d8bd9beb11e098148407b13cae/test/src/test/java/samples/ExampleCreateIssuesAsynchronous.java?at=master
and changed my code accordingly. Now it works.
Hope this helps.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Community moderators have prevented the ability to post new answers.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.