如何启动第二个独立的Java过程平台?理想情况下,它应该与当前运行的Java版本相同。有没有任何有用的系统属性?如何启动第二个Java进程?
回答
这是不可能的,一般来说。
@ khachik回答中提供的配方不一定适用于Java的非Sun实现。
Java可执行文件不一定叫
java
,不一定住在bin
子目录。即使使用Sun Java,在Windows上也有两个可执行文件;java
和javaw
。对于不同的Java实现,启动JVM的命令的命令选项是不同的。因此
ProcessBuilder
步骤可能涉及不可移植的参数。
虽然大多数JVM都采用主Sun java
命令选项,有许多不同之处。例如:
- IBM J9使用
j9
和j9w
为可执行文件名称。 - BEA/Oracle JRockit有不同的
-X
和-XX
选项。 - Jikes RVM使用
rvm
作为可执行文件的名称,并且仅支持Sun的java
选项的子集。 - IKVM使用
ikvm
作为可执行文件的名称。
(注:这些都只是在各自的在线文档的粗略浏览脱颖而出的例子。)
您可以使用java.home
系统属性来查找当前JVM:
String jvm = new java.io.File(new java.io.File(System.getProperty("java.home"),
"bin"),
"java").getAbsolutePath();
,然后使用ProcessBuilder
(或Runtime.exec
)运行它。
请注意,对于JDK java.home
指向包含在JDK中的JRE目录。
您是否尝试过使用Apache共享库?如果你还没有尝试launcher project。这段时间对我来说非常有用。
下面是从他们的网站项目介绍:
启动程序组件的设计是一个跨平台的Java应用程序启动。
原始Java类来自Tomcat 4.0项目。
Commons-launcher无需启动批处理脚本或shell脚本来启动Java类。在某些情况下,可能需要删除批处理或外壳脚本:
- 您希望避免必须确定某些应用程序路径的位置。您的应用程序的主目录等。在Windows批处理脚本中动态确定此操作对于某些版本的Windows或在Unix平台上使用softlink时非常棘手。
- 您希望避免必须处理本机文件和路径分隔符或本机路径引用问题。
- 您需要强制执行某些系统属性,例如java.endorsed.dirs与JDK 1.4一起运行时。
- 您希望允许用户传递自定义JVM参数或系统属性,而无需在脚本中解析和重新排序参数。这在批处理脚本和shell脚本中可能会非常棘手和/或混乱。 您希望从配置文件引导系统属性,而不是将它们硬编码到批处理脚本和shell脚本中。
- 您想提供本地化的错误消息,这在批处理脚本和shell脚本中非常棘手。
如果我理解它,那么它不会启动Java进程,除此之外我知道可执行文件的任何外部进程。但这是问题。我不知道当前的可执行文件。 – Horcrux7 2010-12-12 20:54:53
- 1. 如何在调试器启动时附加第二个进程?
- 2. 自动启动第二个进程并附加在调试
- 3. 第二次启动线程
- 4. 启动第二个安装程序WIX
- 5. 启动第二个JavaFX应用程序
- 6. 启动第二个实例时Adobe Reader进程失败
- 7. 如何在iPad应用程序中启动第二个MainWindow.xib?
- 8. Java - 如何启动和忘记进程
- 9. NullPointerException启动包第二个活动
- 10. 如何在java中的某个时间启动一个进程?
- 11. Golang:如何在二进制更新时自动重启进程?
- 12. Java应用程序启动 - 如何创建第一个对象
- 13. 从C++进程启动Java进程
- 14. 如何在android中启动第二个活动?得到错误
- 15. 从java启动R进程
- 16. 从Java启动Cygwin进程
- 17. Powershell启动进程Java PassThru
- 18. Java启动独立进程
- 19. 如何杀死java中的进程启动的子进程?
- 20. 在x秒后启动第二个setInterval
- 21. dev.new()启动到第二个显示器
- 22. 启动ViewPagerController与第二个UIViewController
- 23. 第二个进程似乎使第一进程崩溃(.NET,C#)
- 24. 如何同时启动两个进程?
- 25. 从另一个java进程启动java进程时进程挂起
- 26. 如何启动一个java程序?
- 27. 在Visual Studio 2010中启动第一个项目后启动第二个项目
- 28. 如何在Windows中启动另一个进程时启动进程?
- 29. 如何在C#窗体中启动第二个计时器?
- 30. 如何启动第二个媒体播放器..?
任何链接以支持您的第一个索赔? – 2010-12-12 14:06:16