2017-06-09 2 views
0

je tente d'utiliser javac pour compiler mon javafile javac Main.java -cp ./lib HelloWorld.java et moi avons eu ce javac: file not found: HelloWorld.java ici est mon java sourcefile: Main.java sous ./utilisation javac et java pour excute fichier de classe avec des classes externat sous un autre répertoire

import lib.*; 

    public class Main 
    { 
     public static void main (String []args) 
     { 
      HelloWorld hw = new HelloWorld(); 
      System.out.println (hw.getMsg()); 
     } 
    } 

et HelloWorld.java sous ./lib

package lib; 

public class HelloWorld 
{ 
    public String getMsg() 
    { 
     return "HelloWorld!"; 
    } 
} 

Toute aide serait appréciée!

+0

Eh bien oui - vous demandez à compiler 'HelloWorld.java', pas' lib/HelloWorld.java'. Le fichier 'HelloWorld.java' (relativement au répertoire de travail actuel) n'existe pas ... –

+0

utilisez le chemin spécifié:' /lib/HelloWorld.java 'pas avec un espace – srp321

+0

Merci à vous tous! J'ai finalement excuter la classe principale. Détails dans [link] (https://stackoverflow.com/questions/13738343/import-class-file-in-java?rq=1) – Shark

Répondre

1

Votre commande doit être

javac Main.java lib/HelloWorld.java 

Votre tentative échoue pour deux raisons:

  • la -cp lib (si nécessaire) doit être avant le code source noms de chemins
  • le classpath n'est pas utilisé trouver des fichiers sources; c'est pour trouver des fichiers compilés.

Dans ce cas, définir le chemin de classe à ./lib est incorrect pour une autre raison. Le répertoire lib correspond en fait au nom du package de la classe HelloWorld. Si le classpath était ./lib, puis java et javac rechercherait la version compilée de HelloWorld.java dans

./lib/lib/HelloWorld.class 
+0

Merci beaucoup! J'ai mal compris la signification de '-cp'. Merci pour votre temps et votre patience !! – Shark

+0

Pour clarifier la deuxième puce (qui est entièrement correcte), il est utilisé pour trouver les fichiers compilés que votre code importe que le compilateur doit voir pour s'assurer que vous utilisez correctement l'API. Je l'ai probablement mal dit, mais vous obtenez l'image. –