2009-09-07 15 views
13

Uso Eclipse con scripts ant y Eclipse funciona bien con la instalación JRE predeterminada en Windows XP.¿Cómo convierto al JDK en el JRE predeterminado?

La molestia surge cuando quiero ejecutar scripts ant compilando con javac-tag, donde falla porque no hay tools.jar en el classpath.

He tenido la idea de que si pudiera hacer que el JDK se convirtiera en Java por defecto en Windows, entonces tendría lo que tengo hoy, además de una hormiga que funciona de la caja.

¿Se puede hacer esto? ¿Qué me he perdido en el proceso de instalación?


Editar: Yo sé de JAVA_HOME, pero eso es tedioso y propenso a errores (actualizar manualmente las variables de entorno cuando un JDK más fresco está disponible no siempre es algo que recuerdo).


Editar: Terminé encontrar la manera de hacer la tarea javac utilizar el compilador de Eclipse (ecj.jar), que funciona muy bien.


Editar: Maven también es compatible con el compilador de Eclipse, pero esto parece ser muy rara vez se utiliza y con una versión antigua de ecj.jar. Tengo la intención de ver esto en un momento posterior.


Editar: Usando ecj con Maven-compilador-plugin 3.0 funciona muy bien, y permite la construcción con un JRE.


Editar: Tuve problemas con la herramienta javadoc al bloquearse al analizar bytecode generado por ecj.

+1

Cuando se ejecuta la hormiga está ejecutando un archivo por lotes, así que aparte de las variables declaradas en el archivo por lotes que estás única otra opción es vars ambiente. La versión actual de Java está disponible desde el registro en Windows (HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft \ Java Runtime Environment), que creo que se actualiza cuando se instala Java y, por lo tanto, es posible hacer una búsqueda allí, pero si me preguntas JAVA_HOME es la opción más fácil. –

Respuesta

14

La respuesta es "no", no hay forma de que el JDK sea el JVM predeterminado cuando se instala.

Como señalan las otras respuestas, puede ajustar su ruta y su JAVA_HOME para apuntar al JDK, o una JVM completamente diferente. De hecho, esto es lo que hace la instalación de Java en primer lugar.

Sin embargo, su problema es que desea tools.jar para ser encontrado. Para hacerlo, puede copiarlo en el directorio ext en su JVM predeterminada. Compruebe la estructura de archivos JDK here. Esto probablemente funcionará.

Por otro lado, si la modificación de las variables JAVA_HOME y PATH para Java parece molesto, recordar que es sólo uno de una serie de cosas que hacemos para mantenernos aguda just kidding, sucks that we still have to do this in 2009 http://www.smiley-faces.org/smiley-faces/smiley-face-smile.gif

+1

funciona! ... muchas gracias @Yar – learner

+3

"¿recuerdas que es solo una de una serie de cosas que hacemos para mantenernos en forma?" Siento una gran cantidad de entusiasmo, pero como me acabo de topar con esto personalmente, preferiría un sistema que no requiera mucha mano. – Basic

+0

@Basic es todo relativo, creo. He estado con Objective-C (y Xcode) durante dos años y esto parece ridículamente fácil. JDK y classpath son básicamente los únicos dos problemas que tienes en Java. –

2

Intente cambiar la variable de entorno JAVA_HOME para que apunte al JDK en lugar del JRE.

Como alternativa o posiblemente adicional, agregue una entrada PATH al directorio JDK bin antes de cualquiera de los directorios del sistema de Windows.

Sospecho JAVA_HOME es suficiente para conseguir trabajo de hormigas, pero a veces es bueno para obtener la versión del JDK de Java, etc en el camino también, así que cuando se acaba de ejecutar java desde la línea de comandos, obtendrá exactamente la misma versión que cuando ejecuta javac.

+1

Gracias por la solución, que yo sepa. Estoy muy cansado de mantener estos indicadores si un simple ajuste de instalación podría hacer el truco. ¡ –

0

Esto normalmente se hace configurando su variable de entorno JAVA_HOME en el directorio raíz JDK que desea usar.

Por ejemplo desde una línea de comandos o archivo por lotes sólo tiene que hacer algo como:

set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_14 

Sin embargo para configurar JAVA_HOME añadirlo a las variables de entorno en el pestaña avanzada en la hoja de propiedades permanentemente Mi Computadora.

1

Probablemente se podría escribir un script WSH a reconfigura tu ruta de forma automática.

guión Esta JScript sólo imprime algo de información:

//file: jdk.js    usage: cscript /Nologo jdk.js 
var objShell = WScript.CreateObject("WScript.Shell"); 
function setJdk(version) { 
    try { 
    var jdk = objShell.RegRead("HKEY_LOCAL_MACHINE\\SOFTWARE\\" + 
     "JavaSoft\\Java Development Kit\\" + version + "\\JavaHome"); 
    if(jdk != null && jdk != "") { 
     jdk += "\\bin"; 
     var path = objShell.RegRead("HKEY_CURRENT_USER\\Environment\\Path"); 
     path = jdk + ";" + path; 
     WScript.Echo("Could set PATH to " + path + "\n"); 
    } 
    } catch(err) { /*probably key does not exist*/ } 
} 
setJdk("1.7"); 
setJdk("1.6"); 
setJdk("1.5"); 

hay un método RegWrite que se puede utilizar para escribir en el registro. Hay un poco de trabajo involucrando determinar la última versión y rejigir la ruta, eliminando las entradas obsoletas y clasificando las rutas del sistema frente al usuario. Sin duda, podría usarse para establecer JAVA_HOME también. La entrada JDK debería aparecer antes del directorio system32, ya que el instalador JRE pone un java.exe allí.

(no estoy 100% seguro de si la cáscara recogería sobre dichas modificaciones o si sería necesario un reinicio/env variable de recarga de algún tipo.)

0

Al parecer Eclipse puede compilar sin la tools.jar . Supongo que tienen un comando específico javac que puede funcionar con un JRE (y no un JDK); esta podría ser la razón por la que pueden enumerar sus advertencias.

De todos modos, iría de la manera estándar (como se sugiere arriba) e instalaré un JDK en su sistema. Incluso puede iniciar Eclipse con ese JDK específico (sin ningún cambio en JAVA_HOME) ajustando el archivo eclipse.ini (consulte estos instructions).

+0

Sí, Eclipse tiene su propio compilador incremental. O bien es Jikes o está basado en él (por lo que recuerdo). – cjstehno

+0

jikes se escribió en C++ pero ecj debería basarse en él. –

4

Copiar el archivo tools.jar a una ubicación donde Eclipse lo está buscando puede funcionar, pero es complicado y frágil, ya que es un paso que quizás no recuerde la próxima vez que actualice su JDK. Lo mejor es convencer a Eclipse para que lo busque en el lugar correcto.

Establecer JAVA_HOME en la ubicación correcta funciona para algunas herramientas, pero Eclipse does not honor it.

Un par de cosas para probar:

  • Asegúrese de que se identifica el JDK y seleccionado bajo Preferencias-> Java-> JRE instalados.

  • Asegúrese de que Ant está siendo invocado por el JDK. Una pista es que en la parte superior de la salida de la consola debe ver la ruta del javaw.exe que se está usando . Si esa ruta está en JRE, se necesita más convincente.Verifique Ejecutar-> Herramientas externas-> Herramientas externas Configuraciones -> [su compilación Ant] -> JRE y asegúrese de que las configuraciones allí apuntan al JDK.

+0

salvaste mi día con la información de que eclipse lo reemplaza por ant y aunque jdk predeterminado esté configurado correctamente ;-D –

9
  1. Descargar JDK desde el sitio web
  2. Una vez que todo está terminado, vaya a Panel de control
  3. abierto JAVA
  4. Haga clic en la pestaña Java y seleccione Ver
  5. Habrá un elemento presente en la lista. Cambie la ruta de Java de JRE a la JDK que ha descargado, así: C:\Program Files\Java\<your_jdk_version>\bin\java.exe.
    Por ejemplo, la mía tiene el siguiente aspecto: C:\Program Files\Java\jdk1.7.0_07\bin\java.exe
Cuestiones relacionadas