Я использую sun/oracle jdk 1.6.0_32, и компилятор javac, похоже, создает файлы классов для целевой версии 1.5 jvm, а не 1.6. Он не будет принимать -Известник 1.6 -target 1.6. Глядя на сгенерированный файл класса с помощью javap, вы видите основную версию: 49 не 50, как я ожидал. Eclipse Indigo правильно создает 1.6-совместимые файлы классов с основной версией: 50. Я впервые заметил это при использовании ant 1.8.2 в eclipse и не смог установить исходные или целевые атрибуты в 1.6. Есть ли что-то, что я делаю неправильно?Основная версия Java-класса
Добавление
У меня есть только 1 JDK (1.6.0_32) установлен. Из командной строки я получаю следующее.
[email protected]:~/projects/simpleHelloWorld/bin/com/kwcons$ ls -al
total 8
drwxr-xr-x 2 ken ken 4096 2012-06-28 16:50 .
drwxr-xr-x 3 ken ken 4096 2012-06-28 16:46 ..
[email protected]:~/projects/simpleHelloWorld/bin/com/kwcons$ javac -d /home/ken/projects/simpleHelloWorld/bin -version /home/ken/projects/simpleHelloWorld/src/com/kwcons/HelloWorld.java
javac 1.6.0_32
[email protected]:~/projects/simpleHelloWorld/bin/com/kwcons$ ls -al
total 12
drwxr-xr-x 2 ken ken 4096 2012-06-28 16:50 .
drwxr-xr-x 3 ken ken 4096 2012-06-28 16:46 ..
-rw-r--r-- 1 ken ken 441 2012-06-28 16:50 HelloWorld.class
[email protected]:~/projects/simpleHelloWorld/bin/com/kwcons$ /usr/lib/jvm/java-6-sun/bin/javap -verbose HelloWorld |grep major
major version: 49
[email protected]:~/projects/simpleHelloWorld/bin/com/kwcons$
Это то, что я получаю, если я использую источник и -target.
[email protected]:~/projects/simpleHelloWorld/bin/com/kwcons$ javac -d /home/ken/projects/simpleHelloWorld/bin -version -source 1.6 -target 1.6 /home/ken/projects/simpleHelloWorld/src/com/kwcons/HelloWorld.java
javac 1.6.0_32
javac: invalid source release: 1.6
Usage: javac <options> <source files>
where possible options include:
-g Generate all debugging info
-g:none Generate no debugging info
-g:{lines,vars,source} Generate only some debugging info
-nowarn Generate no warnings
-verbose Output messages about what the compiler is doing
-deprecation Output source locations where deprecated APIs are used
-classpath <path> Specify where to find user class files
-cp <path> Specify where to find user class files
-sourcepath <path> Specify where to find input source files
-bootclasspath <path> Override location of bootstrap class files
-extdirs <dirs> Override location of installed extensions
-endorseddirs <dirs> Override location of endorsed standards path
-d <directory> Specify where to place generated class files
-encoding <encoding> Specify character encoding used by source files
-source <release> Provide source compatibility with specified release
-target <release> Generate class files for specific VM version
-version Version information
-help Print a synopsis of standard options
-X Print a synopsis of nonstandard options
-J<flag> Pass <flag> directly to the runtime system
[email protected]:~/projects/simpleHelloWorld/bin/com/kwcons$
Я получаю тот же результат от муравья в затмении.
Сколько копий JDK вы установили? Каков результат 'javac -version'? –
Я использую 1.6.0_21, и он отлично создает классы 1.6. Рассматривали ли вы сообщение об ошибке? – Antimony
То же, что и Джонатан. Пожалуйста, разместите результат «javac -version». Я с трудом верю, что вы действительно получаете версию javac на Java 6. –