2010-10-30 8 views
10

¿Alguien me puede decir que la opción de destino jsr14 de javac seguirá estando disponible con JDK7/8?versión de destino del compilador de Java "jsr14" con JDK7/8

Say,

$ javac -source 1.5 -target jsr14 Hello.java 
+0

¿Cuál es correcto? "se quedará quieto" o "seguirá siendo". Lo siento. No hablo inglés cuando estoy despierto. :) –

+0

¿Qué versión de objetivo "jsr14"? ¿Quieres decir -target 1.4? – EJP

+0

mira esto EJP. http://www.ibm.com/developerworks/java/library/j-jtp02277.html –

Respuesta

4

El último paquete fuente OpenJDK (openjdk-7-ea-src-b130-18_feb_2011.zip) todavía contiene la bandera en la fuente (langtools/src/share/classes/com/sun/tools/javac/jvm/Target.java), pero nunca se ha apoyado, por lo que confiar en ella es una mala idea.

¿Por qué lo necesitas?

+0

Porque solía escribir 1.5 códigos y compilar para el objetivo 1.4 para mis STBox de Java ME. –

+4

@Jin: utilizaría uno de los objetivos admitidos y usaría algo como [Retroweaver] (http://retroweaver.sourceforge.net/) o [Retrotranslator] (http://retrotranslator.sourceforge.net/) para publicar -procesar el resultado. –

+0

Pero jsr14 era perfecto para esto ... –

4

Esa bandera ha sido abandonada desde las etapas beta de 1.5. Solo se incluyó para permitir que el compilador 1.5 beta omita el análisis/análisis de genéricos de forma predeterminada, mientras que la especificación de genéricos no se finalizó. Una vez que se lanzó 1,5, esa bandera perdió sentido. Es posible que las nuevas versiones del compilador no den errores al encontrarlo, pero lo más probable es que lo ignoren silenciosamente.

12

Estamos utilizando fuertemente -jsr14 en OSGi porque nos permite usar genéricos en nuestra API pero todavía implementar en entornos 1.4, que todavía son populares en embedded. Desafortunadamente, hizo que JDK 7 no sea compatible con versiones anteriores de Java 6 y 5. Javac 1.7 ignora la información genérica que está realmente presente en los archivos JAR. Afortunadamente, no hay ningún problema en el tiempo de ejecución, ya que esta información se ignora de todos modos. Y no es como si se tratara de una característica no documentada ...

Lamentablemente, las personas de adelante a menudo tienen muy poca consideración por las personas que no pueden simplemente actualizar a la última y mejor. Supongo que a Oracle realmente ya no le importan los mercados integrados.

Es probable que ahora tengamos que enviar dos JAR, uno para el incrustado y el otro para el JDK 7. Sucks.

Este es el informe de error que archivamos: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7078419

+0

Eclipse P2 usa el objetivo jsr14 por una razón similar. Lamentablemente, no es cierto que no haya problemas en el tiempo de ejecución. OpenJDK explota al usar la reflexión en los tipos que se compilaron con el objetivo jsr14. Esto es especialmente problemático cuando uso Spring DM o Blueprint como se ve aquí: https://gist.github.com/1251497 – mpilquist

+1

Me encontré con este problema OSGi. ¿Existe un informe de error OSGi por el que pueda votar? Nota: la resolución para el informe de errores JDK es: No es un defecto Tiene que ser arreglado en el lado OSGi entonces. – Puce

+0

He presentado un problema aquí: https://issues.apache.org/jira/browse/FELIX-3455 Por favor vota por ello. – Puce

Cuestiones relacionadas