我的项目文件夹就像
├── bin
│ ├── org...
│ └── resources
│ └──driver
├──src
│ └──org...
└── resources
└──driver
...
其中driver是一个可兴奋的文件。 如何在我的java项目中使用该程序,尤其是当我将其作为JAR导出时?
我试过
...
java.net.URL driverURL = this.getClass().getResource("/resources/driver");
cmd[0] = driverURL.toString();
process = Runtime.getRuntime().exec(cmd);
但它不起作用。
我阅读了一些文章,说明如何使用inputStream访问资源,但我想知道如何访问可执行文件?
答案 0 :(得分:1)
在插件中使用:
var examples = ['sometext, sometext, sometext',
'sometext',
'sometext, sometext',
'sometext, sometext, sometext,',
'sometext, sometext, sometext, sometext',
'sometext,',
'sometext sometext, sometext sometext'];
examples.forEach(function(example){
var splitResult = example.split(', ');
if (splitResult.length < 4 &&
splitResult.indexOf('') === -1 &&
splitResult.filter(function(x){return x.split(' ').length > 1}).length === 0 &&
splitResult.filter(function(x){return x.substr(-1) === ','}).length === 0)
console.log(example + ': valid');
else
console.log(example + ': not valid');
});
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);
会返回插件中任何内容的网址,但此网址通常是内部Eclipse格式网址。
FileLocator.find
将URL转换为“文件”URL,这可能涉及将对象从插件Jar复制到临时位置。
您可以使用<{1}}获取
FileLocator.toFileURL
或
Bundle
Bundle bundle = FrameworkUtil.getBundle(getClass());
方法总是返回包含类的插件的包,第二种方法可以获取任何类的包。