2017-01-22 21 views
0

J'utilise la fonction de construction ant sur Linux pour compiler un programme Java. J'ai trois fichiers java et je suis en train de les importer dans mon fichier main.java mais je reçois une erreur disantant build donne le paquet n'existe pas erreur

/home/ggaz1/Ser321/Assigns/Assign2/src/main.java:4 error: package Assign2.src does not exist 

est le fichier build.xml ici. le chemin d'accès est

/home/ggaz1/Ser321/Assigns/Assign2 

<?xml version="1.0"?> 
<project name="Movie Library." 
     default="targets" basedir="." 
     xmlns:dn="antlib:org.apache.ant.dotnet" 
     xmlns="antlib:org.apache.tools.ant" 
     xmlns:cpptasks="antlib:net.sf.antcontrib.cpptasks"> 

    <property name="src.dir" value="src"/> 
    <property name="build" value="classes"/> 
    <property environment="env"/> 
    <property name="user" value="${env.USERNAME}"/> 

    <target name="targets"> 
     <echo message="Targets are clean, prepare, build, execute, and targets"/> 
    </target> 

    <path id="compile.classpath"> 
     <pathelement location="${build}"/> 
    </path> 

    <target name="prepare"> 
     <mkdir dir="${build}" /> 
    </target> 

    <target name="clean"> 
     <delete dir="${build}" failonerror="false"/> 
    </target> 

    <target name="build" depends="prepare"> 
     <javac srcdir="${src.dir}" 
      includeantruntime="false" 
      destdir="${build}"> 
     <src path="src"/> 
     <classpath refid="compile.classpath"/> 
     </javac> 
    </target> 

    <target name="execute.java" depends="build" 
      description="Run the program"> 
     <echo message="command line execute: java -cp classes main, MovieDescription, MovieLibrary" /> 
     <java classname="main" fork="yes"> 
      <classpath refid="compile.classpath"/> 
     </java> 
    </target> 
</project> 

merci à l'avance

+0

S'il vous plaît montrer le message d'erreur complet (en éditant la question pas dans un commentaire) et la cible qui a échoué. Quelle est la disposition de votre fichier Java? Est-ce que votre classe principale est à la racine du classpath? Et y a-t-il un sous-répertoire 'Assign2' contenant la classe' MovieDescription'? – vanje

+0

J'ai le dossier comme Assign2 qui a alors un dossier src avec MovieDescription.java, MovieLibrary.java et main.java. J'ai corrigé la question et ajouté l'erreur –

+0

Vous devriez nous montrer la partie pertinente de votre build.xml. La cible qui échoue et les propriétés associées. Si votre build.xml n'est pas trop long, vous pouvez inclure le fichier entier. Et n'oubliez pas de mentionner le chemin du fichier build.xml. Sans cette information, il est impossible d'aider. – vanje

Répondre

0

fait, vous n'avez pas des paquets. Tous vos fichiers de code source Java se trouvent dans le dossier src. Le dossier src est la racine de vos paquets. Si vous voulez un paquet assign2 vous devez créer un dossier dans src appelé assign2 et vous devez placer tous les fichiers Java qui appartiennent au paquet assign2 dans ce dossier.

En supposant que votre classe Main elle-même est sans package et vos classes MovieDescription et MovieLibrary sont dans le package assign2.

Ensuite, votre mise en page de fichier devrait ressembler à:

--src 
    | 
    +---- Main.java 
    | 
    +---- assign2 
      | 
      +---- MovieDescription.java 
      | 
      +---- MovieLibrary.java 

Alors Main.java n'a pas de declarartion paquet.

Im MovieDescription.java et MovieLibrary.java la déclaration de colis devrait être:

package assign2; 
[...] 

Et les importations Main.java ressemblent à:

import assign2.MovieLibrary; 
import assign2.MovieDescription; 

Peut-être que vous devriez jeter un oeil à la Oracle Java Tutorial, Lesson: Packages. Et selon les conventions de nommage Java, vous devez utiliser uniquement des noms commençant par des lettres minuscules pour les packages et les variables. Les classes devraient toujours commencer par une lettre majuscule.