¿Cómo puedo iniciar una segunda plataforma de proceso Java independiente? Idealmente, debería ser la misma versión de Java que se ejecuta actualmente. ¿Hay alguna propiedad útil del sistema?¿Cómo puedo iniciar un segundo proceso de Java?
Respuesta
No es posible, en general.
La receta proporcionada en la respuesta de @khachik no necesariamente funcionará para una implementación que no sea de Sun de Java.
El ejecutable de Java no es necesariamente llama
java
y no necesariamente viven en elbin
subdirectorio. Incluso con Sun Java, en Windows hay dos ejecutables;java
yjavaw
.Las opciones de comando para el comando que inicia una JVM son diferentes para las diferentes implementaciones de Java. Por lo tanto, el paso
ProcessBuilder
puede incluir argumentos no portátiles.
Aunque la mayoría de las JVM han adoptado las primarias Sun java
opciones de comando, existen numerosas diferencias. Por ejemplo:
- IBM J9 utiliza
j9
yj9w
como los nombres de los ejecutables. - BEA/Oracle JRockit tiene diferentes
-X
y-XX
opciones. - Jikes RVM
rvm
utiliza como el nombre del ejecutable, y sólo soporta un subconjunto dejava
opciones de Sun. - IKVM usa
ikvm
como el nombre del archivo ejecutable.
(Nota: estos son sólo ejemplos que se destacan en una lectura superficial de la respectiva documentación en línea.)
Puede utilizar java.home
propiedad del sistema para encontrar la JVM actual:
String jvm = new java.io.File(new java.io.File(System.getProperty("java.home"),
"bin"),
"java").getAbsolutePath();
y luego ejecutarlo utilizando ProcessBuilder
(o Runtime.exec
).
Tenga en cuenta que para JDK java.home
apunta al directorio JRE incluido en JDK.
¿Ha intentado utilizar las bibliotecas Apache Commons? Si no le has dado una oportunidad al launcher project. Fue bastante útil para mí hace algún tiempo.
Aquí está la descripción del proyecto desde su sitio:
El componente Launcher está diseñado para ser un lanzador de aplicaciones Java multiplataforma.
Las clases Java originales provienen del proyecto Tomcat 4.0.
Commons-launcher elimina la necesidad de un script por lotes o shell para iniciar una clase Java.Algunas situaciones en las que puede ser deseable eliminar un lote o un script de shell son:
- Quiere evitar tener que determinar dónde se encuentran ciertas rutas de acceso de aplicaciones, p. el directorio de inicio de su aplicación, etc. Determinar esto dinámicamente en un script de lote de Windows es muy complicado en algunas versiones de Windows o cuando los softlinks se usan en plataformas de Unix.
- Desea evitar tener que manejar separadores nativos de archivos y rutas o problemas de citas de rutas nativas.
- Debe aplicar ciertas propiedades del sistema, p. java.endorsed.dirs cuando se ejecuta con JDK 1.4.
- Desea permitir a los usuarios pasar argumentos de JVM personalizados o propiedades del sistema sin tener que analizar y reordenar argumentos en su secuencia de comandos. Esto puede ser complicado y/o complicado en los guiones por lotes y de shell. Desea iniciar las propiedades del sistema desde un archivo de configuración en lugar de codificarlas en sus secuencias de comandos de proceso por lotes y de shell.
- Desea proporcionar mensajes de error localizados, lo cual es muy complicado de hacer en los scripts por lotes y shell.
Si lo entiendo, no ayuda iniciar un proceso Java, sino cualquier proceso externo donde conozco el ejecutable. Pero este es el problema. No sé el ejecutable actual. – Horcrux7
- 1. cómo iniciar un proceso en cierto tiempo en Java?
- 2. Iniciar un proceso por separado
- 3. cómo controlar (iniciar/matar) un proceso en segundo plano (aplicación de servidor) en ruby
- 4. cómo iniciar una nueva instancia del segundo proyecto en un nuevo proceso
- 5. ¿Cómo iniciar y ejecutar un script externo en segundo plano?
- 6. ¿Cómo se inicia un proceso en segundo plano en Perl?
- 7. ¿Cómo iniciar un proceso y pausarlo inmediatamente?
- 8. Cómo iniciar un proceso y hacerlo 'independiente'
- 9. Cómo iniciar un proceso detenido en Linux
- 10. Cómo iniciar el servidor de rieles en segundo plano
- 11. Proceso de prueba. ¿Iniciar?
- 12. ¿Iniciar el programa en un segundo monitor?
- 13. Iniciar proceso no elevada de proceso elevada
- 14. ¿Cómo puedo iniciar un applet de Java con más memoria?
- 15. Cómo iniciar el proceso oculto?
- 16. Iniciar un proceso con los parámetros
- 17. ¿Cómo ejecuté() un proceso en segundo plano en C?
- 18. php ejecutar un proceso en segundo plano
- 19. Iniciar un nuevo proceso y matar el proceso actual
- 20. proceso en segundo plano en java escuchando stdin
- 21. ¿Cómo puedo usar nohup para ejecutar el proceso como proceso en segundo plano en Linux?
- 22. ¿Es posible UAC elevar un proceso sin iniciar otro proceso?
- 23. Iniciar un proceso en la misma consola
- 24. ¿Iniciando un proceso en Java?
- 25. iOS - Cómo completar un proceso largo en segundo plano
- 26. ¿Cómo puedo poner un proceso en segundo plano después de su ejecución con CTRL + Z roto?
- 27. Cómo iniciar un proceso como modo de administrador en C#
- 28. Iniciar un proceso como LocalSystem usando ProcessStartInfo
- 29. ¿Cómo puedo encontrar el ID de proceso (pid) de un proceso iniciado en Java?
- 30. Iniciar un proceso con credenciales de un servicio de Windows
¿Algún enlace para apoyar su primera demanda? –