Целевая версия компилятора java "jsr14" с JDK7 / 8 - PullRequest
10 голосов
/ 30 октября 2010

Может кто-нибудь сказать мне, что целевая опция jsr14 в javac все еще будет доступна с JDK7 / 8?

Скажем,

$ javac -source 1.5 -target jsr14 Hello.java

Ответы [ 3 ]

12 голосов
/ 18 августа 2011

Мы интенсивно используем -jsr14 в OSGi, потому что это позволяет нам использовать обобщенные значения в нашем API, но при этом развертывать в средах 1.4, которые по-прежнему популярны во встроенных приложениях.К сожалению, они сделали JDK 7 не обратно совместимым с Java 6 и 5. Javac 1.7 игнорирует общую информацию, которая фактически присутствует в файлах JAR.К счастью, нет проблем во время выполнения, так как эта информация все равно игнорируется.И это не так, как если бы это была какая-то недокументированная особенность ...

К сожалению, люди на фронте часто очень мало относятся к людям, которые не могут просто обновиться до последних и самых лучших.Думаю, Oracle больше не заботится о рынках встраиваемых систем.

Теперь нам, вероятно, придется отправить два JAR-файла, один для встроенного и один для JDK 7. Отстой.

Это ошибкаотчет мы подали: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7078419

4 голосов
/ 25 февраля 2011

Этот флаг был отменен с бета-версии 1.5.Он был включен только для того, чтобы позволить 1.5 бета-компилятору обходить проверку / разбор обобщений по умолчанию, пока спецификация обобщений не была завершена.После выхода 1.5 этот флаг стал бессмысленным.Новые версии компилятора могут не давать ошибок при их обнаружении, но, скорее всего, молча игнорируют это.

4 голосов
/ 25 февраля 2011

Последний пакет исходных текстов OpenJDK (openjdk-7-ea-src-b130-18_feb_2011.zip) по-прежнему содержит флаг в источнике (langtools/src/share/classes/com/sun/tools/javac/jvm/Target.java), но он никогда не поддерживается, поэтому полагаться на него - плохая идея.

Зачем тебе это нужно?

...