当前位置: 首页 > 面试题库 >

在单独的过程中执行Java应用程序

梁嘉祥
2023-03-14
问题内容

是否可以以平台无关的方式使用Java应用程序的名称(而不是其位置)在单独的进程中加载​​Java应用程序?

我知道你可以通过…执行程序

Process process = Runtime.getRuntime().exec( COMMAND );

…这种方法的主要问题是,此类调用是特定于平台的。

理想情况下,我会将方法包装成像…这样简单的东西。

EXECUTE.application( CLASS_TO_BE_EXECUTED );

…并以形式传入应用程序类的完全限定名称CLASS_TO_BE_EXECUTED


问题答案:

两个提示:

System.getProperty("java.home") + "/bin/java" 为你提供了Java可执行文件的路径。

((URLClassLoader) Thread.currentThread().getContextClassLoader()).getURL()帮助你重构当前应用程序的类路径。

然后你EXECUTE.application就是(伪代码):

Process.exec(javaExecutable, "-classpath", urls.join(":"), CLASS_TO_BE_EXECUTED)



 类似资料:
  • 问题内容: 我在处理pyGTK应用程序时遇到一些问题。我给线程一些时间来完成其任务,如果有问题,我还是继续继续,只是警告用户。但是,一旦我继续,该线程就会停止,直到调用gtk.main_quit为止。这让我感到困惑。 相关代码: .................................... 问题答案: 首先,不要继承,使用。 其次,很可能导致您明显的阻塞的原因是它采用了一个默认值为的参

  • 问题内容: 我目前正在开发一个Python应用程序,希望在该应用程序上查看实时统计信息。我想使用它以使其易于使用和理解。 问题是我的Flask服务器应该在我的Python应用程序的最开始处启动,而在最末尾停止。它看起来应该像这样: 因为我需要我的应用程序上下文(用于统计),所以不能使用multiprocessing.Process。然后,我尝试使用threading.Thread,但是Werkze

  • 问题内容: 我已经为这个问题苦苦挣扎了一段时间,我似乎无法解决它。我已经尝试过不同的方法(Runtime.exec(),ProcessBuiler),但是似乎都没有用。 这是我的问题。我有一台经常打开的笔记本电脑。这台笔记本电脑运行一个Java工具,该工具通过usb连接到arduino,以打开和关闭房屋中的灯。我自己创建了这个程序,因此我也在做一些定期的维护工作。最近,我添加了一个从html界面重

  • 我已经为hive创建了一个名为Zodiac的UDF,然后添加了JAR文件,并在hive中创建了临时函数。

  • 我有一个需要执行一些业务逻辑的处理程序,我希望它在单独的线程池中执行,以不阻塞io事件循环。我已将DefaultEventExecutorGroup添加到管道中,如http://netty.io/4.0/api/io/netty/channel/ChannelPipeline.htmljavadoc和http://netty.io/wiki/new-and-noteworthy-in-4.0.ht

  • 问题内容: 这是我的代码: 为什么不起作用?我懂了。在独立的应用程序中可以使用自动装配吗? 问题答案: Spring在独立应用程序中工作。您使用错误的方式来创建Spring bean。这样做的正确方法是: 在第一种情况下(问题中的那个),您将自己创建对象,而不是从Spring上下文中获取对象。因此,Spring没有机会获得依赖关系(这会导致)。 在第二种情况(此答案中的一种)中,您是从Spring