如何访问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 ]
我的项目文件夹就像
├── 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 ]