über den Java classpath-Einstellung auf Linux

jeder.

Ich verwendet openjdk-7 auf arch linux. Ich begann zu lernen, Java vor kurzem, und begegnet so ein problem:

Ich habe eine Datei unter /home/hqwrong/Code/java/mew/Mouth.java:

package mew;

public class Mouth{
   public static void main(String argv[]){
       pickle.Say s = new pickle.Say();
  }
}

und einer weiteren an /home/hqwrong/Code/java/pickle/Say.java :

package pickle;

public class Say{
   public Say(){
      System.out.println("Say");
   }
}

Ich zusammengestellt Say.java zu Say.class mit:

$ cd /home/hqwrong/Code/java/pickle
$ javac Say.java

ist erfolgreich.

Ich zusammengestellt Mouth.java mit:

$ cd ../mew
$ export CLASSPATH=.:/home/hqwrong/Code/java/
$ javac Say.java

keine Fehlermeldung.

Aber nach dem ich Typ:

$ java Sagen

Bekam ich:

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)

Es ist dasselbe, wenn ich Sie benutze:

$ java -cp $CLASSPATH Say

Ich brauche deine Hilfe,bitte?

  • Führst du den code, wie, oder Sie modifiziert es für diese Frage? Ich vermute, dass in Ihrem code, den Sie haben könnte " - Paket von java.mew'?
  • der Anfangswert ist nichts, ich weiß nicht, warum es kompiliert und funktioniert erfolgreich bis ich dieses Paket testen, Vielleicht kennt er den jdk-system der lib-Pfad durch einige andere Weg.
  • ja,es ist das original.Ich bin java zu lernen, das ist mein code zu lernen, der java-package-Funktionalität. Sie schlägt auch dann fehl, nach dem modifizierten Paket java.mew.
  • Sorry, das ist gut. Sie nicht haben sollte " - Paket von java.etwas" in Ihrem code. "Paket mew" oder "Paket Gurke" ist OK. Ich war nur die überprüfung, ob es war ein Fehler in der Frage.
InformationsquelleAutor Wang HongQin | 2012-01-23
Schreibe einen Kommentar