21

次のコマンドでコマンド プロンプトを使用して、Java ファイル 'check4PrimeTest.java' をコンパイルしようとしています。

javac -classpath .:junit.jar check4PrimeTest.java

次のエラーが表示されます。

エラー: パッケージ junit.framework が存在しません import junit.framework.*;

プログラムに import junit.framework.* があるため、このエラーが発生する理由がわかりません。

以下は私のコードです:

package check4prime;
// check4PrimeTest.java

//Imports 
import junit.framework.*;

public class check4PrimeTest extends TestCase {

    //Initialize a class to work with. 
    private check4Prime check4prime = new check4Prime();

    //constructor 
    public check4PrimeTest (String name) { 
        super(name);
    }

    //Main entry point 
    public static void main(String[] args) {
        System.out.println("Starting test...");
        junit.textui.TestRunner.run(suite());
        System.out.println("Test finished...");
    } // end main() 

    //Test case 1 
    public void testCheckPrime_true() {
        assertTrue(check4prime.primeCheck(3));
    }

    //Test cases 2,3 
    public void testCheckPrime_false() {
        assertFalse(check4prime.primeCheck(0));
        assertFalse(check4prime.primeCheck(1000));
    }

    //Test case 7 
    public void testCheck4Prime_checkArgs_char_input() { 
        try {
            String [] args= new String[1];
            args[0]="r";
            check4prime.checkArgs(args);
            fail("Should raise an Exception.");
        } catch (Exception success) { 
            //successful test
        }
    } //end testCheck4Prime_checkArgs_char_input() 

    //Test case 5 
    public void testCheck4Prime_checkArgs_above_upper_bound() {
        try { 
            String [] args= new String[1];
            args[0]="10001";
            check4prime.checkArgs(args);
            fail("Should raise an Exception.");
        } catch (Exception success) { 
            //successful test
        }
    } // end testCheck4Prime_checkArgs_upper_bound() 

    //Test case 4 
    public void testCheck4Prime_checkArgs_neg_input() {
        try { 
            String [] args= new String[1];
            args[0]="-1";
            check4prime.checkArgs(args);
            fail("Should raise an Exception.");
        } catch (Exception success) { 
            //successful test
        }
    } // end testCheck4Prime_checkArgs_neg_input()

    //Test case 6
    public void testCheck4Prime_checkArgs_2_inputs() {
        try { 
            String [] args= new String[2];
            args[0]="5";
            args[1]="99";
            check4prime.checkArgs(args);
            fail("Should raise an Exception.");
         } catch (Exception success) {
            //successful test 
         } 
    } // end testCheck4Prime_checkArgs_2_inputs 

    //Test case 8 
    public void testCheck4Prime_checkArgs_0_inputs() {
        try { 
            String [] args= new String[0];
            check4prime.checkArgs(args);
            fail("Should raise an Exception.");
        } catch (Exception success) { 
            //successful test
        } 
    } // end testCheck4Prime_checkArgs_0_inputs 

    //JUnit required method. 
    public static Test suite() { 
        TestSuite suite = new TestSuite(check4PrimeTest.class);
        return suite;
    } //end suite() 

} //end check4PrimeTest
4

6 に答える 6

12

パッケージの場所をシステムに通知せずにパッケージをインポートしようとしているため、このエラーが発生しています。パッケージの場所をシステムに伝える手順は次のとおりです。

javac ターゲットは、ソース ディレクトリとターゲット ディレクトリ以外には何も指定しません。クラスパス エントリを追加しません。適切な JUnit jar ファイルのエントリを追加する必要があります。詳細については、javac タスクのドキュメントを参照してください。クラスパス属性、ネストされた要素、または他の場所で宣言されたパスへの参照として、JUnit へのパスを指定することができます。

出典: Eclipse で Ant を使用して JUnit テストを実行する際の問題。初歩的な質問

prompt> javac -classpath .;$JUNIT_HOME\junit4.x.x.jar test.java

編集:JUNITのインストール(ここから):

ウィンドウズ

JUnit を Windows にインストールするには、次の手順に従います。

1. Unzip the junit.zip distribution file to a directory referred to as %JUNIT_HOME%.

2. Add JUnit to the classpath (type the following into a command line shell): `set CLASSPATH=%CLASSPATH%;%JUNIT_HOME%\junit.jar`

Unix (バッシュ)

Unix に JUnit をインストールするには、次の手順に従います。

1. Unzip the junit.zip distribution file to a directory referred to as $JUNIT_HOME.

2. Add JUnit to the classpath (type the following into terminal):

`export CLASSPATH=$CLASSPATH:$JUNIT_HOME/junit.jar`
于 2012-10-04T00:26:00.090 に答える
1

import ステートメントは、アーティファクトが必要であることをコンパイラに伝えます。この場合、junit を使用する必要があることをコンパイラに伝えています。ただし、それを使用していることを宣言することと、それを JVM に提供することは別のことです。junit jar ファイルがクラスパスにあることを確認する必要があります。

編集: ちなみに、IDE を使用すると時間を節約できます。日食は威圧的であると認識していますが、使用を開始することをお勧めします。あなたがコマンドラインタイプの人でない限り、しかし、もしあなたが何か深刻なことをしているなら、IDE IMO を使うべきです。

于 2012-10-04T00:23:04.597 に答える
1

パッケージをインポートしているか、見つからない jar ファイルを使用しているため、このエラーが発生しています。

クラスパス変数の環境変数を確認する必要があります。jar ファイルまたはパッケージのパスを classpath 変数に追加します。また、「クラスを読み込めません。メイン ファイルが見つかりません」というエラーが表示される場合は、Java ファイルのクラス ファイル パスを classpath 変数に追加します。

お役に立てれば。!!

于 2016-06-27T08:03:39.650 に答える
1

私の場合、Windowsマシンでは、コロン : をセミコロン ; に置き換えました。そしてそれはうまくいきました!

javac -cp .:./abc.jar:./def.jar Practice.java Practice.java:2: エラー: パッケージ com.coding.javapractice が存在しません

: を ; に置き換えた後

javac -cp .;./abc.jar;./def.jar Practice.java

正常にコンパイルされました。

于 2019-05-24T01:44:33.513 に答える
0

誰かに役立つ場合に備えて、ここに私の答えを追加します。複数の jar をインポートしようとする場合は、*ワイルドカードを使用できます。私のために働いたコマンド(Windows 10、Java 17)は次のとおりです。

javac -cp .;* Canvas
于 2021-10-03T15:31:17.740 に答える