2011-02-09 12 views
6

Sorprendentemente no pude encontrar la respuesta a esta pregunta.¿Cómo se puede construir el JRE de Java desde la fuente (src.zip en JDK)?

Estoy tratando de reconstruir el java JRE de la fuente. Obtengo la fuente JRE de Java extrayendo el archivo src.zip en el JDK.

Después de hacer cualquier cambio que necesite hacer en el JRE, ¿cómo compilo la nueva fuente en archivos .java (después de lo cual puedo comprimirlo en el archivo rt.jar).

Gracias.

+0

¿Qué quieres decir con 'después de hacer los cambios que necesito' – Woot4Moo

+0

@ Woot4Moo, simplemente quiero decir que después de editar el código fuente del JRE deseo construirlo nuevamente en mi versión personalizada del JRE. Por ejemplo, puedo editar Object.java para que cada objeto tenga otro campo o alguna función especial. Me doy cuenta de que hay formas mucho mejores de hacer esto, pero solo estoy dando un ejemplo. – Tom

+1

¿Tienes alguna excepción o error? ¿Podría mencionar su enfoque? eso ayudaría a otros a ver qué está pasando mal. – Favonius

Respuesta

1

Algunas de las fuentes de Java que componen rt.jar se generan durante el proceso de construcción , a partir de secuencias de comandos y otros medios. Algunos de los archivos de propiedades también son generados de esta manera, y algunos de los archivos de propiedades se convierten en fuente Java que también contribuye a rt.jar. Entonces, sin hacer una compilación completa de y rellenar el directorio 'gensrc', no tendrá todas las fuentes que componen rt.jar .

Tomado de: http://www.java.net/forum/topic/jdk/java-se-snapshots-project-feedback/it-possible-just-build-rtjar

Así, cuando decimos javac en todos los archivos de Java dentro src.zip que no se compilará como el grafo de dependencias se rompe (la falta de archivos generados)

también Echa un vistazo a esto: Where to get full source code for rt.jar?

+0

Gracias. ¿Qué significan con una compilación completa? ¿Construyendo la fuente C del JDK? – Tom

+0

@Tom: Bueno, desde el enlace parece que la construcción completa implica la ejecución de los scripts para generar el código de la placa de la caldera y el archivo de propiedades. Aunque no estoy muy seguro de qué más puede implicar. Continuaré actualizando mi respuesta a medida que obtengo algo que valga la pena compartir. – Favonius

3

Tiene mejores posibilidades al usar OpenJDK (la base de los futuros JDK de Oracle/Sun). http://openjdk.java.net/

Pero ¿qué es lo que desea cambiar en realidad? Tal vez hay una mejor manera ...

+0

Me temo que OpenJDK no es suficiente (no es compatible con todas las aplicaciones de Java). Además, esta debería ser una tarea trivial, ya que la fuente está ahí y solo tiene que ser compilada. – Tom

+1

El src.zip no contiene todas las fuentes y no sé lo que permite la licencia. OpenJDK necesita algunos binarios adicionales que no sean de código abierto, pero entonces todas las aplicaciones deberían funcionar correctamente. – Puce

1

Después de volver a consultar la pregunta. Javac en cualquiera de esos archivos le permitirá reconstruirlos. Además, no compila archivos .java en archivos .java sino que se convierte en archivos .class. Puede escribir un script de construcción ANT para manejar el trabajo pesado para usted.

+0

@ Woot4Moo, me temo que está destinado a construir la fuente de bajo nivel C. Simplemente estoy hablando de los archivos java para el archivo JRE rt.jar (está en src.zip en la carpeta JDK, no en la fuente del JDK). – Tom

+0

@Tom ahh ya veo. – Woot4Moo

+0

Creo que esto también se basa en OpenJDK, ¿no? – Puce

2

Si desea cambiar un número de clase, solo necesita compilar esas clases. No necesita compilar todo el JDK a menos que tenga la intención de reemplazarlo.

Si solo desea aplicar un parche, cree un JAR de sus clases modificadas y agréguelo a la ruta de la clase de arranque.

+0

Supongo que podría compilar todas las clases que modifico una por una. Sin embargo, me sorprende que haya una carpeta fuente que aparentemente no se puede compilar fácilmente (?). – Tom

+1

Su propósito es educativo. La licencia JDK desalienta la modificación de cualquier biblioteca/clase estándar (los abogados pueden tener una vista más fuerte). Sin embargo, puede compilar OpenJDK desde cero. –

Cuestiones relacionadas