2012-12-25 5 views
0

Je suis nouveau à Java ..configuration classpath en java

J'ai une structure par exemple comme suit:

/folder/foo.java /folder/bar.java /folder/foobar.java 

Maintenant, je suis en train de courir foobar.java mais je reçois l'exception suivante

Exception in thread "main" java.lang.ClassNotFoundException: /folder/foobar 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:247) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:149) 

Alors j'ai essayé de le configurer en faisant

java -classpath . foobar 
Exception in thread "main" java.lang.NoClassDefFoundError: foobar 
Caused by: java.lang.ClassNotFoundException: foobar 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 

Des indices? Merci

+3

semble que vous avez besoin de compiler foobar.java dans foobar.class, via quelque chose comme "javac foobar.java" – mfrankli

Répondre

2

La valeur par défaut d'un classpath est, '' c'est-à-dire le répertoire courant. La valeur de la variable d'environnement classpath remplace cette valeur. Si la commande java est émise avec l'option -cp ou -classpath, elle remplace la valeur par défaut de la variable d'environnement '.' Et classpath. Voici un exemple de définition d'un chemin de classe pendant l'exécution de la classe. C:> java -classpath "." com.abc.example.SayHello

Contrairement à la compilation où vous devez indiquer le chemin exact, pour exécuter le fichier de classe, nous devons suivre la structure du package.

Ceci est dû à la manière dont Classloader tente de résoudre l'emplacement de la classe en combinant son package et son nom de classe. Vous devez être sur l'emplacement racine du package et émettre la commande java spécifiant la structure du package.

C:> java com.abc.example.SayHello

Bonjour !!

1

Tout d'abord, vous devez compiler des fichiers Java:

javac /folder/*.java 

Ensuite, vous pouvez exécuter une classe avec main() fonction:

java -cp . folder.foobar