【问题标题】:Executing script(.bat and .sh) inside the bundle在包中执行脚本(.bat 和 .sh)
【发布时间】:2014-02-05 12:00:12
【问题描述】:

我的包在 Resources 文件夹中包含一个脚本(.bat 和 .sh)。 必须在包内执行此脚本。

我如何在 OSGi 世界中实现这一点?例如 a.w.e.s.o.m.e

【问题讨论】:

  • 你能用普通的java程序运行你的脚本吗?在服务类中运行时出现什么错误?

标签: java shell batch-file osgi exec


【解决方案1】:

要执行脚本,您可以使用 Runtime.exec(..) 来启动 shell(sh、bash 等)。这些 shell 可以执行作为文件提供或从标准输入读取的脚本。后一种选择可以在这里使用。 Runtime.exec(..) 返回一个 Process 对象,您可以获取它的输入和输出流。按照此处How do I access a file inside an OSGi bundle? 中的描述从您的捆绑包中获取资源,并将该数据传递给您的流。

【讨论】:

    【解决方案2】:

    我假设您的脚本需要在捆绑激活时执行某些操作?在一个包中,您可以创建一个 Activator(实现 BundleActivator 接口)并让它运行脚本。

    我不确定你的脚本是做什么的,但我个人不会使用脚本并尝试以不同的方式做事。

    【讨论】:

    • 是的,是的,一旦激活它肯定会运行(实际上它会在调用此捆绑提供的服务时运行。该服务将需要运行脚本。(我发现的问题是我无法在包中运行脚本)
    猜你喜欢
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2014-02-15
    • 1970-01-01
    相关资源
    最近更新 更多