如何访问jar中的可执行文件

How to access a executable file in jar

我的项目文件夹就像

├── bin
│   ├── org...
│   └── resources
│       └──driver
├──src
│   └──org...
└── resources
    └──driver

...

其中驱动程序是一个可激发的文件。 如何在我的 java 项目中使用该程序,尤其是当我将其导出为 JAR 时?

我试过了

...
java.net.URL driverURL = this.getClass().getResource("/resources/driver");
cmd[0] = driverURL.toString();
process = Runtime.getRuntime().exec(cmd);

但是不行。

我看过一些文章说如何使用inputStream访问资源,但我想知道如何访问可执行文件?

在插件中使用:

Bundle bundle = .... your plugin bundle

URL url = FileLocator.find(bundle, new Path("/resources/driver"), null);

url = FileLocator.toFileURL(url);

String cmd = url.getFile();

Runtime.getRuntime().exec(cmd);

FileLocator.find returns 你可以 URL 插件中的任何内容,但是这个 URL 通常是 Eclipse 内部格式 URL.

FileLocator.toFileURL 将 URL 转换为 'file' URL,这可能涉及将对象从插件 Jar 复制到临时位置。

您可以通过以下方式获得 Bundle

Bundle bundle = FrameworkUtil.getBundle(getClass());

Bundle bundle = Platform.getBundle("plugin id");

FrameworkUtil方法总是returns包含class的插件的bundle,第二种方法可以获得任何class.[=17=的bundle ]