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
Ответы
Ответ 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
Скомпилировано успешно.