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

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

ただいまの
回答率

90.34%

  • Java

    14471questions

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

  • XML

    693questions

    XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

  • JUnit

    184questions

    JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。

  • Raspbian

    113questions

  • Apache Ant

    6questions

    Apache Antは、開発環境(OS等)に依存しにくい、Javaプロジェクト用のビルドツールです。

JUnitのjarを使用してコンパイルできない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 69

yukkuri

score 348

前提・実現したいこと

現在、ant 及び JUnit も学習をしています。
コンパイル、その後実行をするところまではできましたが、
エラーが発生して、進みません。

発生している問題・エラーメッセージ

$ ant UnitTest
Buildfile: build.xml

versionInfo:
     [echo] ------------------------------------------
     [echo] Jyl Library project
     [echo] OS name = Linux
     [echo] Java version = 1.8.0_65
     [echo] Java VM version = 25.65-b01
     [echo] Ant version = Apache Ant(TM) version 1.9.9 compiled on March 1 2017
     [echo] ------------------------------------------

compile:
    [javac] Compiling 2 source files

BUILD FAILED                                  // ここがエラー
build.xml:20: Reference ./jlib/junit.jar not found.

Total time: 1 second

該当のソースコード

build.xml

<project name="Jyl Library" default="versionInfo" basedir=".">

    <target name="versionInfo">

        <echo message="${user.name}'sData${line.separator}"/>
        <echo message=""/>
        <echo message="------------------------------------------"/>
        <echo message="${ant.project.name} project"/>
        <echo message="OS name = ${os.name}"/>
        <echo message="Java version = ${java.version}"/>
        <echo message="Java VM version = ${java.vm.version}"/>
        <echo message="Ant version = ${ant.version}"/>
        <echo message="------------------------------------------"/>

    </target>


    <target name="compile" depends="versionInfo">

        <javac srcdir="org" classpathref="./jlib/junit.jar" debug="true" includeAntRuntime="false"/>

    </target>


    <target name="UnitTest" depends="compile">

        <junit>

            <formatter type="xml"/>

        <classpath>

            <fileset dir="." includes="junit.jar"/>

        </classpath>

        <test name="org.jyl.base.utest.JylFrameTest.java"/>

        </junit>

    </target>

</project>

試行錯誤したあと

<project name="Jyl Library" default="versionInfo" basedir=".">

    <path id = "junit">
        <pathelement location="/home/pi/Desktop/JylLibrary/junit.jar"/>
    </path>

    <target name="compile" depends="versionInfo">

        <javac srcdir="org" debug="true" includeAntRuntime="yes">
            <classpath>
                <path refid="junit"/>
            </classpath>
        </javac>

    </target>


    <target name="UnitTest" depends="compile">

        <junit>

            <formatter type="xml"/>

        <classpath>

            <fileset dir="." includes="junit.jar"/>

        </classpath>

        <test name="org.jyl.base.utest.JylFrameTest.java"/>

        </junit>

    </target>

</project>

試したこと

classpath や パスを絶対パスにしてみたりした -> 実行できたものもあったが
junit.jar が見つかっていないものと思われるエラー( パッケージが見つかりません... ) が出た

stackoverflow に似たような例があったのですが、知識不足でよくわかりませんでした。

実行結果はパスやユーザー名を消していますが、パスが存在していることは確認しています。

補足情報(FW/ツールのバージョンなど)

Raspberry pi の Raspbian を使用しています。
実行結果にもいくつか情報は出しています。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

classpath と classpathref を間違えてませんか?

追記

junit task の設定

javacclasspath/path@refid が javac@classpathref の設定と同じくなる(maven で ant タスクつくるからまともに最近かいてないよな)

<javac destdir="${maven.build.testOutputDir}" 
           nowarn="false" 
           debug="true" 
           optimize="false" 
           deprecation="true" 
           target="1.1" 
           verbose="false" 
           fork="false" 
           source="1.3">
      <src>
        <pathelement location="${maven.build.testDir.0}"/>
      </src>
      <classpath>
        <path refid="build.test.classpath"/>
        <pathelement location="${maven.build.outputDir}"/>
      </classpath>
    </javac>

で javac@classpathref や javac/classpath/path@refid に設定するのが

<path id="build.test.classpath">
    <pathelement location="${maven.repo.local}/junit/junit/4.12/junit-4.12.jar"/>
    <pathelement location="${maven.repo.local}/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar"/>
</path>

で指定した path@id となります。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/07 14:15

    classpath でもエラーでした。
    それ以前に、JUnit.jarに パッケージがない と出ているクラスがありませんでした。
    ただ、自分で作ったクラスも存在しないとエラーの出ている状態です。

    キャンセル

  • 2018/12/07 17:59

    classpath や pathelement を使用したら、エラーが変わりました。
    Desktop/JylLibrary/build.xml:20: Compile failed; see the compiler error output for details.
    です。また、javac に encoding="utf-8" や includeAntRuntime="yes" にしてみましたが、結果は変わりませんでした。

    キャンセル

  • 2018/12/07 20:51

    ん?javac でエラーが出ているのですが、なぜ<junit>なのでしょうか。また、いろいろ試行錯誤したソースを貼り忘れたので、貼っておきます。

    キャンセル

  • 2018/12/07 20:56

    ああ、 javac も junit も同じだよ javac 側に差し替えるかw

    キャンセル

  • 2018/12/07 20:58

    違うものだとおもってるようだけど

    javac タスク
    java タスク
    junit タスク

    の必須部分は全部一緒よ

    キャンセル

  • 2018/12/07 22:04 編集

    教えてもらったとおり追記と思うのですが、コンパイルでエラーが出てしまいます。シンボルを見つけられません です。また、テストクラスのパッケージを移動したのですが、同パッケージのテスト元のクラスも取得できていないようです。

    キャンセル

  • 2018/12/07 22:14

    そういえば、できるかな、と思ってコマンドラインでも実行してみました。その結果、*を使用し全てコンパイル->JUnit関係だけのエラー Testクラスだけコンパイル->JUnit関係+同パッケージのクラスがない でした。

    キャンセル

  • 2018/12/08 17:15

    追記:実はJUnit3.8.1だったのですが、ネットを参考にしてJUnit4を使用したら、JUnit関係のエラーはなくなりました。

    キャンセル

  • 2018/12/08 17:23 編集

    解決しました!ここまでありがとうございました。

    キャンセル

同じタグがついた質問を見る

  • Java

    14471questions

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

  • XML

    693questions

    XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

  • JUnit

    184questions

    JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。

  • Raspbian

    113questions

  • Apache Ant

    6questions

    Apache Antは、開発環境(OS等)に依存しにくい、Javaプロジェクト用のビルドツールです。