【问题标题】:Eclipse execute a file in jarEclipse 执行 jar 中的文件
【发布时间】:2011-03-15 16:04:20
【问题描述】:

我正在开发一个 Eclipse 产品。在我的插件中,我添加了一个需要执行的可执行文件(.exe)。当我从 Eclipse 启动产品时,使用我的文件系统上的可执行文件的路径引用该文件,一切正常。

当我导出产品时,插件被打包在一个包含可执行文件的 jar 文件中。当它引用文件时,路径类似于:

$path_to_the_plugin_jar!/$path_to_exe_file_inside_the_jar

使用此路径启动新进程抛出异常。

如何引用 jar 中的文件?如何执行该文件?

我用eclipse导出产品时可以提取文件吗?

谢谢

【问题讨论】:

    标签: java eclipse jar eclipse-plugin eclipse-rcp


    【解决方案1】:

    EXE 文件需要由 Windows 执行。出于所有实际目的,jar 文件是 zip 文件,因此您基本上需要弄清楚如何让 Windows 在 ZIP 文件中运行 EXE 文件。

    据我所知,不存在这样的工具,因此您必须将 EXE 文件解压缩到一个临时位置,然后从那里运行它。

    【讨论】:

    • 或者,您可以将插件标记为在安装时展开。您在功能中执行此操作。在这种情况下,您将拥有一个插件目录而不是插件 jar。
    • 感谢您的提示!这应该是解决方案..但我怎么能告诉 ecplipse 爆炸插件?
    【解决方案2】:

    在执行之前,您可以将文件解压缩到 bundles-state 位置。 类似的东西:

    InputStream stream = FileLoactor.openStream(myBundle, new Path("path/to/exe/")
    IPath pathUnpacked = myBundle.getStateLocation().append("myExe.exe");
    writeToDisk(stream, pathUnpacked);
    Program.launch(pathUnpacked.toOSString());
    

    HTH 汤姆

    【讨论】:

      【解决方案3】:

      感谢您的回答。

      正如 Konstantin Komissarchik 建议的那样,我通过将产品从基于插件的产品转换为基于功能的产品并在 feature.xml 文件中为插件指定“解包...”来解决了问题。

      当我导出产品时,插件在一个文件夹中展开,我可以参考我需要的文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-09
        • 1970-01-01
        • 2022-01-08
        • 2016-08-15
        • 1970-01-01
        • 2014-08-19
        相关资源
        最近更新 更多