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

时间:2015-11-15 03:01:02

标签: java eclipse eclipse-plugin

我的项目文件夹就像

├── 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访问资源,但我想知道如何访问可执行文件?

1 个答案:

答案 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()); 方法总是返回包含类的插件的包,第二种方法可以获取任何类的包。