tout le monde.sur le paramètre classpath de Java sur Linux
J'ai utilisé openjdk-7 sur arch linux. J'ai commencé à apprendre Java récemment, et rencontré un tel problème:
J'ai créé un fichier à /home/hqwrong/Code/java/mew/Mouth.java:
package mew;
public class Mouth{
public static void main(String argv[]){
pickle.Say s = new pickle.Say();
}
}
et un autre à/home /hqwrong/Code/java/pickle/Say.java:
package pickle;
public class Say{
public Say(){
System.out.println("Say");
}
}
Je compilé Say.java à Say.class, en utilisant:
$ cd /home/hqwrong/Code/java/pickle
$ javac Say.java
qui i s réussi.
Je compilé Mouth.java, en utilisant:
$ cd ../mew
$ export CLASSPATH=.:/home/hqwrong/Code/java/
$ javac Say.java
aucun message d'erreur.
Mais après type:
$ java Say
Je suis:
Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.mew
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:649)
at java.lang.ClassLoader.defineClass(ClassLoader.java:785)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:472)
Il est même quand je l'utilise:
$ java -cp $CLASSPATH Say
J'ai besoin de votre aide, s'il vous plaît?
Est-ce que vous montrez le code tel quel ou vous l'avez modifié pour cette question? Je soupçonne que dans votre code, vous pourriez avoir 'package java.mew '? – Vadim
@anubhava sa valeur initiale est rien, je ne sais pas pourquoi il compile et fonctionne avec succès jusqu'à ce que j'ai fait ce paquet-test, Peut-être qu'il connaît le chemin du système jdk lib par une autre voie. –
@laixer oui, c'est l'original.J'apprends java, ceci est mon code pour apprendre la fonctionnalité du paquet de Java. Il échoue également, après avoir modifié le paquetage java.mew. –