質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Redmine

Redmineは、プロジェクトのタスク管理、進捗管理、情報共有が可能な、 オープンソースプロジェクト管理ソフトウェアです。

Q&A

解決済

1回答

3883閲覧

RedmineのチケットをCSV出力するプログラム NoClassDefFoundError発生

javabigineer

総合スコア87

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Redmine

Redmineは、プロジェクトのタスク管理、進捗管理、情報共有が可能な、 オープンソースプロジェクト管理ソフトウェアです。

0グッド

0クリップ

投稿2016/03/01 08:42

RedmineのAPIであるtaskadapterを使用し、チケットCSV出力プログラムを作成しましたが、

redmineMgr = RedmineManagerFactory.createWithApiKey(url, apiAccessKey);の部分で
NoClassDefFoundErrorが発生しました。
原因がわからず困っています。
お分かりの方いらっしゃいましたら、ご指摘ください。

下記、ソースです。
package CSV;

import java.util.List;
import java.util.Optional;
import com.taskadapter.redmineapi.IssueManager;
import com.taskadapter.redmineapi.RedmineException;
import com.taskadapter.redmineapi.RedmineManager;
import com.taskadapter.redmineapi.RedmineManagerFactory;
import com.taskadapter.redmineapi.bean.Issue;
import com.taskadapter.redmineapi.bean.IssueFactory;
import com.taskadapter.redmineapi.bean.Project;
import com.taskadapter.redmineapi.bean.ProjectFactory;
import com.taskadapter.redmineapi.bean.Tracker;
import com.taskadapter.redmineapi.bean.TrackerFactory;
import com.taskadapter.redmineapi.bean.User;

public class TicketClient {

private static final String BUG = "バグ"; private static final String FUNCTION = "機能"; private static final String SUPPORT = "サポート"; private RedmineManager redmineMgr = null; private IssueManager issueMgr = null; private List<User> userList = null; private boolean flg = false; public void setup(String url, String apiAccessKey) throws Throwable { System.out.println("【接続先】" + url); redmineMgr = RedmineManagerFactory.createWithApiKey(url, apiAccessKey); issueMgr = redmineMgr.getIssueManager(); userList = redmineMgr.getUserManager().getUsers(); flg = true; } private void flgChk() { if (!flg) { System.err.println("TicketClient#setup(String, String)を先に実行してください。"); System.exit(1); } } public void putIssue(String projectKey, String trackerName, String subject, String description) throws RedmineException { flgChk(); System.out.println("■■■チケットを1件登録します。■■■"); // チケット名重複チェック if(chkSubject(projectKey, subject)){ System.out.println("題名が重複する場合、チケットは発行しません。題名 :" + subject); }else { // Issue(1チケット)生成 Issue issue = IssueFactory.create(null); // プロジェクト setProjectInfo(issue, projectKey); // 題名 issue.setSubject(subject); // 説明 issue.setDescription(description); // トラッカー setTrackerInfo(issue, trackerName); // 1チケット登録 Issue newIssue = issueMgr.createIssue(issue); issueMgr.update(newIssue); System.out.println("チケットを登録しました。題名 :" + subject); } } private void setProjectInfo(Issue issue, String projectKey) throws RedmineException { int intProjectKey = redmineMgr.getProjectManager().getProjectByKey(projectKey).getId(); Project project = ProjectFactory.create(intProjectKey); issue.setProject(project); } private void setTrackerInfo(Issue issue, String trackerName) { int trackerId = getTrackerId(trackerName); Tracker tracker = TrackerFactory.create(trackerId, null); // 第二引数はなくてもよい issue.setTracker(tracker); } private boolean chkSubject(String projectKey, String subject) throws RedmineException { List<Issue> issues = issueMgr.getIssues(projectKey, null); // 第二引数はなくてもよい? boolean contains = issues.stream().anyMatch(a -> { if(subject.equals(a.getSubject())){ return true; } return false; }); return contains; } private int getTrackerId(String trackerName) { switch (trackerName) { case BUG: return 1; case FUNCTION: return 2; case SUPPORT: return 3; default: return 1; } } public List<Issue> getAllIssues(String projectKey) throws RedmineException { flgChk(); System.out.println("■■■チケットを全件取得します。■■■"); List<Issue> issues = issueMgr.getIssues(projectKey, null); // 第二引数はなくてもよい? System.out.println("チケットの件数 : " + issues.size()); issues.stream().forEach(is -> { System.out.println("【案件番号】" + is.getSubject()); }); return issues; } public Issue getOneIssue(String projectKey, String subject) throws RedmineException { flgChk(); System.out.println("■■■チケットを1件取得します。■■■"); List<Issue> issues = issueMgr.getIssues(projectKey, null); // 第二引数はなくてもよい? // チケットの探索(無かったらnull) Optional<Issue> is = issues.stream().filter(i ->(i.getSubject().equals(subject))).findAny(); if(is.isPresent()){ System.out.println("【題名】" + is.get().getSubject()); return is.get(); } System.out.println("チケットは取得できませんでした。" ); return null; } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

エラーとしては、importして利用しているClassが見つからない。
という事でしょう。

実行時にクラスパスが通ってない。と思います。

java 実行時のコマンドを記載してください。

投稿2016/03/01 08:46

hato_pato

総合スコア215

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

javabigineer

2016/03/01 08:59

eclipseで実行しているのですがJava実行時のコマンドとはなにを指しているのでしょうか。。申し訳ありません。無知なもので。。。
hato_pato

2016/03/01 09:32

eclipseからなら実行の構成を見ると分かると思います。 eclipseで実行していてNoClassDefFoundErrorが出てるのだとしたら ビルド-クラスパスの設定 でRedMineAPIのライブラリ(jar)を指定すれば大丈夫な気がします。
hato_pato

2016/03/01 09:32

ちなみに、NoClassDefFoundErrorの後のログは掲載可能ですか?
javabigineer

2016/03/01 09:39

ビルドパスには外部jarを追加しています。 以下、エラー内容です。 java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory at org.apache.http.conn.ssl.AbstractVerifier.<init>(AbstractVerifier.java:60) at org.apache.http.conn.ssl.AllowAllHostnameVerifier.<init>(AllowAllHostnameVerifier.java:43) at org.apache.http.conn.ssl.AllowAllHostnameVerifier.<clinit>(AllowAllHostnameVerifier.java:45) at org.apache.http.conn.ssl.SSLSocketFactory.<clinit>(SSLSocketFactory.java:151) at com.taskadapter.redmineapi.RedmineManagerFactory.createSystemDefaultConnectionManager(RedmineManagerFactory.java:181) at com.taskadapter.redmineapi.RedmineManagerFactory.createDefaultHttpClient(RedmineManagerFactory.java:193) at com.taskadapter.redmineapi.RedmineManagerFactory.createWithApiKey(RedmineManagerFactory.java:92) at CSV.TicketClient.setup(TicketClient.java:33) at CSV.exportCsv.main(exportCsv.java:52) Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory at java.net.URLClassLoader$1.run(URLClassLoader.java:372) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:360) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 9 more
javabigineer

2016/03/01 10:04

ありがとうございます!このエラーは解決しました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問