Avec OS X Mavericks et après la mise à niveau de mon JDK, je ne peux plus compiler avec ant.
J'ai fait la recherche sur Google habituelle et la grande majorité des réponses indiquent que Java_HOME n'est pas défini.
Aidez-moi, vous êtes mon seul espoir!
Informations pouvant être utiles
$ tail -n1 /etc/profile
export Java_HOME=$(/usr/libexec/Java_home -v 1.7)
$ echo $Java_HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
$ which javac
/usr/bin/javac
$ ls -lah /usr/bin/javac
lrwxr-xr-x 1 root wheel 75B 8 Jan 11:23 /usr/bin/javac -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac
$ ls -lah /System/Library/Frameworks/JavaVM.framework/Versions/
total 80
drwxr-xr-x 13 root wheel 442B 19 Mar 10:10 .
drwxr-xr-x 12 root wheel 408B 19 Mar 09:59 ..
lrwxr-xr-x 1 root wheel 10B 8 Jan 11:23 1.4 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10B 8 Jan 11:23 1.4.2 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10B 8 Jan 11:23 1.5 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10B 8 Jan 11:23 1.5.0 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10B 8 Jan 11:23 1.6 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10B 8 Jan 11:23 1.6.0 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10B 19 Mar 10:10 1.7 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10B 19 Mar 10:10 1.7.0 -> CurrentJDK
drwxr-xr-x 8 root wheel 272B 8 Jan 11:23 A
lrwxr-xr-x 1 root wheel 1B 8 Jan 11:23 Current -> A
lrwxr-xr-x 1 root wheel 58B 19 Mar 10:10 CurrentJDK -> /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents
$ javac -version -source 1.7 -target 1.7 -fork true
javac 1.7.0_51
javac: invalid source release: 1.7
Usage: javac <options> <source files>
Merci à @ david-w pour ses efforts et sa contribution à la résolution du problème.
Pour résoudre, je devais
Sudo cp $Java_HOME/lib/tools.jar /Library/Java/Extensions/
comme mentionné ici
idiot os x
La solution dans la réponse acceptée ne fonctionnait pas pour moi; J'ai eu l'erreur:
tools.jar: Aucun fichier ou répertoire de ce type.
Cependant, j'ai trouvé une solution de travail ici . En bref, j'ai installé la dernière version du site Web de jdk d'Oracle et cela résout le problème.
Je suis aussi sur OS X Mavericks avec Java 1.7.0_51 d’Oracle. Il n'y a pas d'option -fork
, mais tout le reste semble bien fonctionner:
public class HelloWorld
{
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
$ javac -version -source 1.7 -target 1.7 -fork true *.Java
javac 1.7.0_51
javac: invalid flag: -fork
Usage: javac <options> <source files>
use -help for a list of possible options
$ javac -version -source 1.7 -target 1.7 *.Java
javac 1.7.0_51
$ # Everything compiled...
Utilisez-vous OpenJDK ou la version officielle d'Oracle? Il est possible que OpenJDK ne reconnaisse pas encore la version 1.7. Je sais que OpenJDK était derrière la version officielle d'Oracle.
-source
et -target
? 1.6
au lieu de 1.7
?Le message d'erreur que vous obtenez est identique à celui que j'ai lorsque j'essaie 1.8
. Essayez-vous de compiler à partir de la ligne de commande, d'Eclipse ou d'Ant?
Une dernière possibilité: le .
n'est pas un point:
$ javac -version -source 1․7 -target 1.7 *.Java
javac: invalid source release: 1․7
Usage: javac <options> <source files>
use -help for a list of possible options
Ce n'est pas une période. C'est un petit point e2:80:a4
et non un point/point (2e
):
0000000 j a v a c - v e r s i o n -
6a 61 76 61 63 20 2d 76 65 72 73 69 6f 6e 20 2d
0000020 s o u r c e 1 ․ ** ** 7 - t a
73 6f 75 72 63 65 20 31 e2 80 a4 37 20 2d 74 61
0000040 r g e t 1 . 7 * . j a v a \n
72 67 65 74 20 31 2e 37 20 2a 2e 6a 61 76 61 0a
0000060