【发布时间】:2014-02-05 12:00:12
【问题描述】:
我的包在 Resources 文件夹中包含一个脚本(.bat 和 .sh)。 必须在包内执行此脚本。
我如何在 OSGi 世界中实现这一点?例如 a.w.e.s.o.m.e
【问题讨论】:
-
你能用普通的java程序运行你的脚本吗?在服务类中运行时出现什么错误?
标签: java shell batch-file osgi exec
我的包在 Resources 文件夹中包含一个脚本(.bat 和 .sh)。 必须在包内执行此脚本。
我如何在 OSGi 世界中实现这一点?例如 a.w.e.s.o.m.e
【问题讨论】:
标签: java shell batch-file osgi exec
要执行脚本,您可以使用 Runtime.exec(..) 来启动 shell(sh、bash 等)。这些 shell 可以执行作为文件提供或从标准输入读取的脚本。后一种选择可以在这里使用。 Runtime.exec(..) 返回一个 Process 对象,您可以获取它的输入和输出流。按照此处How do I access a file inside an OSGi bundle? 中的描述从您的捆绑包中获取资源,并将该数据传递给您的流。
【讨论】:
我假设您的脚本需要在捆绑激活时执行某些操作?在一个包中,您可以创建一个 Activator(实现 BundleActivator 接口)并让它运行脚本。
我不确定你的脚本是做什么的,但我个人不会使用脚本并尝试以不同的方式做事。
【讨论】: