web-dev-qa-db-fra.com

erreur javac: "le paquet x n'existe pas" à "import x"

J'essaie de compiler mon fichier Java 'check4PrimeTest.Java' en utilisant la commande Invite avec la commande suivante:

javac -classpath.: junit.jar check4PrimeTest.Java

Je reçois l'erreur suivante:

erreur: le paquet junit.framework n'existe pas import junit.framework. *;

Je ne suis pas sûr de savoir pourquoi je reçois cette erreur car j’ai importé junit.framework. * Dans mon programme.

ci-dessous est mon code:

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
15
Jon Snow

Vous obtenez cette erreur parce que vous essayez d'importer un package sans indiquer à votre système l'emplacement de ce package. Voici les instructions pour indiquer à votre système l'emplacement du package:

Votre cible javac ne spécifie rien en dehors de la source et répertoire cible - il n'ajoute aucune entrée de chemin de classe; tu auras besoin pour ajouter une entrée pour le fichier JAR JUnit approprié. Voir la tâche javac documentation pour plus de détails. Vous voudrez peut-être spécifier le chemin d'accès à JUnit en tant qu'attribut classpath, élément imbriqué ou référence à un fichier chemin déclaré ailleurs.

Source: problème lors de l'exécution des tests JUnit avec Ant dans Eclipse. Question débutant

Prompt> javac -classpath .;$JUNIT_HOME\junit4.x.x.jar test.Java 

EDIT: INSTALLATION DE JUNIT (à partir de ici ):

Les fenêtres

Pour installer JUnit sous Windows, procédez comme suit:

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 (bash)

Pour installer JUnit sous Unix, procédez comme suit:

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`
11
weberc2

Votre déclaration d'importation indique au compilateur que vous avez besoin d'un artefact. Dans ce cas, vous dites au compilateur que vous devez utiliser Junit. Mais déclarer que vous l'utilisez et le fournir à la JVM sont des choses différentes. Vous devez vous assurer que votre fichier JUN JUN est sur votre chemin de classe.

EDIT: Soit dit en passant, utiliser un IDE vous fera gagner du temps. Je me rends compte qu'Eclipse peut être intimidant, mais je recommanderais de commencer à l'utiliser. Sauf si vous êtes plutôt du type ligne de commande, mais même si vous faites quelque chose de grave, vous devez utiliser un IDE IMO.

1
cobolstinks

Vous obtenez cette erreur parce que vous importez un package ou utilisez un fichier JAR qu'il est impossible de localiser.

Vous devez vérifier la variable de chemin de classe de vos variables d’environnement . Ajoutez le chemin de votre fichier jar ou de votre package à la variable de chemin de classe . Ajoutez également le chemin du fichier de classe de votre fichier Java à la variable de chemin de classe s’il présente l’erreur impossible de charger la classe, fichier principal non trouvé "

J'espère que cela t'aides.!!

1
swayamraina

Si vous utilisez Java 9 ou une version ultérieure avec JUnit 5 ou une version ultérieure, il est possible que le package JUnit soit défini dans un module et que vous deviez éventuellement utiliser --module-path pour pointer sur le répertoire contenant le module/JAR modulaire.

0
nikc