Pregunta

He compilado mi fuente con la versión 1.6 de Java utilizando los parámetros -fuente 1.5 y -target 1.5 , y el compilador duerma quejarse en absoluto.

Sin embargo, la aplicación no se ejecutará con Java 1.5 debido a los métodos que faltan. Por supuesto que pude volver a escribir algunos de mi código fuente para ser compatible con 1.5, pero lo que no entiendo es; ¿no debería el código de bytes de Java en el fondo ser "de frente" compatibles?

¿No son los métodos convertidos en código de bytes? ¿Es posible compilar los 1,6 libs / métodos (antes String.isEmpty ()) a 1,5 código de bytes y el paquete todo en el archivo?

¿Fue útil?

Solución

El conjunto completo de opciones de línea de comandos que necesita son:

java -source 1.5 -target 1.5 -bootclasspath /usr/jdk/jdk1.5.0_17/jre/lib/rt.jar

(Cambia a bootclasspath sin embargo su máquina está configurada.)

Por supuesto, las API de mejoras en 1.6 no estarán en 1.5. 1.5 es la mayor parte de su camino a través de su Finalización del periodo de vida útil, por lo que es posible que desee considerar un mínimo de 1,6 de todos modos.

Otros consejos

Si se refiere a métodos de biblioteca Java base, entonces no, esos métodos no se convierten a código de bytes cuando se compila; que ya han sido compilados a código de bytes por Sun (o el distribuidor JVM terceros) e instalados en su sistema operativo. Son referencia y utiliza su código compilado.

No creo java recompilar el código de Java nativa hacia atrás. Por lo tanto, si usted hace una llamada 1.6 - usted no será capaz de acceder a él en 1.5

Puede cambiar la biblioteca está compilando en contra de ser una biblioteca de más edad. En paquetes como eclipse, cada JDK instalado debe aparecer en una ventana "Seleccionar biblioteca", puede elegir cuál de ellos desea compilar en contra.

Si no, usted debe ser capaz de redefinir en el archivo de hormiga o CLI compilar comandos.

Si la orientación de una JVM mayor, esto realmente tiene que ser hecho o puede utilizar las llamadas que no estarán disponibles.

El parámetro de origen sólo hace que el compilador de verificación a nivel sintaxis del lenguaje (fuente = 1,4 sería, por ejemplo, se quejan si encuentra genéricos) pero no le restringen a usar solamente las API disponibles en la versión de Java especificada.

El parámetro de destino hará que los archivos de clase de salida del compilador que se pueden utilizar por un tiempo de ejecución de la versión especificada pero que no (al igual que -fuente) validar la conformidad de cualquier API.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top