2012-07-06 13 views
17

Quiero compilar mis .java (varios) en uno .jar que son compatibles con al menos Java 1.6 y más reciente, preferiblemente Java 1.5 y versiones más recientes de Java. (Tengo Java 1.7.0_5)¿Cómo compilo un .java con soporte para versiones anteriores de Java?

+0

Eche un vistazo a http://www.veryant.com/support/phpkb/question.php?ID=57 – Mualig

+0

'javac -source 1.5 -target 1.5 OverridingInternalExample.java' trabajado para mí –

Respuesta

13

Sí, se puede establecer la versión del compilador en tiempo de compilación. Y compila tu código java en versiones antiguas de java.

Del artículo Oracle: http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/javac.html

compilación cruzada Ejemplo

Aquí se utiliza javac para compilar el código que se ejecutará en una máquina virtual 1.4.

% javac -target 1.4 -bootclasspath jdk1.4.2/lib/classes.zip \ 
      -extdirs "" OldCode.java 

Es posible que también necesite el siguiente parámetro para establecer la versión de su código.

-source release 

: especifica la versión del código fuente aceptado.

2

Puede usar javac -target 1.5 <source files>.

Si está utilizando un sistema de compilación, Eclipse u otro IDE para compilar frascos, especifique cuál.

+1

y' -source 1.5 ' –

+0

tengo netbeans, pero solo puedo usar archivos de texto. ¿Cómo podría aplicar eso en todos los .java en un directorio? – Primm

+1

Con netbeans, haga clic derecho en su proyecto, vaya a propiedades y cambie el "formato de origen/binario" del menú desplegable hacia la parte inferior del cuadro de diálogo que se abre – tofarr

0

Puede utilizar la versión más reciente de JDK y establecer el nivel de fuente en 1.5 - siempre que no utilice clases/métodos que se introdujeron después de 1.5 debería estar bien para todas las versiones de la JVM 1.5 y superior :

-fuente 1,5

0

A partir del JDK 9, JavaC apoyar una nueva opción para la compilación cruzada

javac -release N ... 

lo que equivale a

javac -source N -target N –bootclasspath rtN.jar 
0

Puede especificar la versión de destino del compilador más baja que la construcción Java versión (todas las respuestas básicamente dicen eso) pero no debería: es bastante complicado ya que solo funciona si también proporciona las bibliotecas de clase para la versión de destino real. Si lo haces, estás mucho mejor simplemente con el uso de esta versión antigua de Java para compilar. Mucho más limpio y menos cosas para configurar. Para Java 9, las opciones son un poco más agradables, pero aún necesita un JDK antiguo para el rt.jar.

Lo que puede hacer es en su ciclo ide y dedvelopment utilizar el truco -target/-bootclasspath para obtener un compilador más rápido y mejores advertencias, pero las versiones de TI y de lanzamiento deben hacerse con la versión de destino.

Cuestiones relacionadas