Подтвердить что ты не робот

Javac error: "пакет x не существует" в "import x"

Я пытаюсь скомпилировать свой java файл "check4PrimeTest.java" с помощью командной строки с помощью следующей команды:

javac -classpath.: junit.jar check4PrimeTest.java

Я получаю следующую ошибку:

error: пакет junit.framework не существует import junit.framework. *;

Я не уверен, почему я получаю эту ошибку, поскольку у меня есть 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
4b9b3361

Ответ 1

Вы получаете эту ошибку, потому что вы пытаетесь импортировать пакет, не сообщая вашей системе, где находится пакет. Вот инструкции по указанию вашей системе, где находится пакет:

Ваша цель javac не указывает ничего кроме исходного и целевого каталога - она не добавляет никаких записей пути к классам; вам нужно будет добавить запись для соответствующего JAR файла JUnit. См. Документацию по заданию javac для более подробной информации. Возможно, вы захотите указать путь к JUnit в виде атрибута classpath, вложенного элемента или ссылки на путь, объявленный в другом месте.

Источник: проблема с выполнением тестов JUnit с Ant в Eclipse. Вопрос новичка

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

РЕДАКТИРОВАТЬ: УСТАНОВКА JUNIT (отсюда):

Windows

Чтобы установить 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 (Баш)

Чтобы установить JUnit в Unix, выполните следующие действия:

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'

Ответ 2

Ваш оператор import сообщает компилятору, что вам нужен артефакт, в этом случае вы сообщаете компилятору, что вам нужно использовать junit. Но объявлять, что вы используете его и предоставляете его JVM, это разные вещи. Вы должны убедиться, что ваш jar файл junit находится в вашем пути к классам.

РЕДАКТИРОВАТЬ: Кстати, использование IDE будет для вас экономией времени. Я понимаю, что затмение может быть пугающим, но я бы рекомендовал начать его использовать. Если вы больше не типа командной строки, но даже если вы делаете что-то серьезное, вы должны использовать IDE IMO.

Ответ 3

Вы получаете эту ошибку, потому что импортируете пакет или используете файл jar, который он не может найти.

Вы должны проверить переменные среды для переменной classpath. Добавьте путь к файлу jar или вашему пакету в переменную classpath. Кроме того, добавьте свой путь к файлу класса Java в переменную classpath, если он показывает ошибку "невозможно загрузить класс, главный файл не найден"

Надеюсь, это поможет.!!

Ответ 4

Если вы используете Java 9 или новее с JUnit 5 или новее, то возможно, что пакет JUnit определен в модуле, и вам может понадобиться использовать --module-path чтобы указать на каталог, который содержит модуль /Modular. JAR.

Ответ 5

В моем случае на Windows- машине я просто заменил двоеточие: на точку с запятой; и это сработало!

javac -cp.:./abc.jar:./def.jar Practice.java Practice.java:2: ошибка: пакет com.coding.javapractice не существует

После замены: на;

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

Скомпилировано успешно.