eclipse-plugin - 如何在 eclipse 插件中引用 jar 文件中的文件

标签 eclipse-plugin

我已经创建了一个 eclipse 插件,我想在 eclipse 运行时进行部署。我有以下包结构。

com.myplugin
  |
   ---resources
       |
        ---server.bat

作为插件作业的一部分,应该执行“server.bat”文件。

我将插件打包为 .jar 文件,包括二进制文件中的 resouces 文件夹,并放入 eclipse“plugins”文件夹中。

插件生效并且工作正常,但我在执行“server.bat”文件时遇到问题,该文件位于我生成的 jar 中。错误消息说:

"Windows cannot find "resources\server.bat" make sure you typed name correctly and try again"

我尝试了相对路径和绝对路径,但没有用。

这是完成这项工作的代码:

URL url = Activator.getDefault().getBundle().getEntry("/resources/server.bat");

String fileURL = FileLocator.toFileURL(url).toString();

String commandLine = "cmd.exe /c start " +fileURL;

Process process= Runtime.getRuntime().exec(commandLine);

我得到了“fileURL”输出:

file:/D:/Program Files/IBM/SDP/configuration/org.eclipse.osgi/bundles/2392/1/.cp/resources/server.bat

我不确定这是正确的。

希望这足以回答问题。

或者,请建议一些其他方式,例如创建功能以部署具有文件夹结构的插件。我还没有尝试过这个选项。

最佳答案

我在导出插件时遇到了类似的问题。我不得不引用存储在我的插件 jar 文件中的 exe 文件。导出插件后,我无法访问压缩文件,而在开发插件时可以访问它,因为 eclipse 在我的“开发文件夹”中查找该文件。 为了解决这个问题,我创建了一个插件功能,并在 feature.xml 的“包含的插件”选项卡中选中了选项

Unpack the plug-in archive after the installation.

对于包含exe文件的插件。 使用此选项,您将在 eclipse 插件文件夹下的一个文件夹中找到您的插件文件,您将能够像访问常规文件一样访问它们。

例如

    Bundle bundle = <get a bundle of your plugin>;
    URL url = FileLocator.find(bundle, new Path(<relative path from plugin root to your file>), null);
    try {
        url = FileLocator.resolve(url);
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    }

否则我认为你应该解压你的 jar。

希望这对您有所帮助。

编辑

正如我所说,您可以创建一个功能项目(例如 here ),当您添加插件时,选中“安装后解压插件存档”选项。 Eclipse 将为您完成这项工作,您会在 eclipse 插件文件夹中找到解压缩的插件。这为我解决了问题。

关于eclipse-plugin - 如何在 eclipse 插件中引用 jar 文件中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5622789/

相关文章:

java - 如何以编程方式获取在 Eclipse 中打开的文件的元数据?

eclipse-plugin - 如何通过EGit/JGit插件为Git事件创建监听器?

java - 向 eclipse GEF PaletteDrawer 添加滚动条

java - Eclipse初始化一分钟后调用一个类

eclipse - 如何在Eclipse插件中确定Java源文件的绝对文件路径?

java - 使用 Eclipse JDT、插件开发以编程方式调用菜单项

java - 如何使用 Eclipse 插件创建搜索 View ?

java - 在 Eclipse 插件中,获取与所选 java 文件相对应的 .class 文件的正确方法是什么?

java - 编写自定义 Eclipse 调试器

java - Eclipse SWT java.lang.StackOverflowError : why my listener executes many times?