【问题标题】:Add jar to eclipse plugin添加jar到eclipse插件
【发布时间】:2017-02-21 05:52:43
【问题描述】:

我正在尝试编写 eclipse 插件。我需要在我的代码中使用一个 jar 文件。 里面

public class SampleHandler extends AbstractHandler {
    @Override
    public Object execute(ExecutionEvent event) throws ExecutionException {

jar 文件直接访问使用 进程 p = Runtime.getRuntime().exec(checkStyle_cmd); checkDtyle_cmd 是字符串“java -jar”+“jar 文件的位置”+(其他一些东西)。

我创建了一个“lib”文件夹。将其用作源文件夹。把罐子贴在那里。在运行时的类路径中添加了“/ProjectName/lib/jar_file_name.jar”。不工作。 因此,还在 bin.includes build.properties 中添加了 /Test5/lib/checkstyle-7.1.2-all.jar。仍然没有运气。 我无法访问 jar 文件错误

【问题讨论】:

  • 如果您尝试在单独的进程中运行 jar,则它不必位于当前类路径中 - 您只需将 absolute 文件路径传递给java 命令,但您可能还需要告诉exec 确切地在哪里查找 java 命令。你到底遇到了什么错误?
  • 我收到错误“无法访问 jarfile /Test5/lib/checkstyle-7.1.2-all.jar”。它适用于绝对路径。但我需要将我的项目导出为 jar 插件,以便其他人可以使用它。所以,我需要给出相对路径。

标签: java eclipse jar


【解决方案1】:

您可以使用以下方式在插件中获取 jar 的绝对路径:

Bundle bundle = FrameworkUtil.getBundle(getClass());

URL url = FileLocator.find(bundle, new Path("/lib/jar_file_name.jar"), null);

url = FileLocator.toFileURL(url);

String path = URIUtil.toFile(URIUtil.toURI(fileURL)).getAbsolutePath();

【讨论】:

  • 什么是Bundle和FrameworkUtil?我没有从 Eclipse 得到任何关于导入这些类的建议
  • 它们在 org.eclipse.osgi 插件中,因此请将其添加到插件的依赖项中。
【解决方案2】:

从 jar 中实际提取代码可能比从命令行运行它更好。

在 .jar 文件夹中是字节码的 .class 文件,它是从 .java 文件编译并由 VM 运行的。

您可以使用this网站反编译.class文件。

就从命令行运行代码而言,正如其他人所说,您需要知道绝对路径,而相对路径有时可能不存在,将所有源代码编译成一个会更好。 jar 而不是两个 .jar。

【讨论】:

  • 我尝试使用 SampleHandler.class.getClassLoader().getResource("filename"); 获取 jar 文件的路径;那没起效。我尝试使用文本文件。只有当文件位于 src 文件夹中时,我才会得到输出。如果它位于 lib 文件夹中(我已将其更改为源文件夹),则它不会显示路径
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 2013-06-18
  • 1970-01-01
  • 2019-10-14
  • 2011-08-10
  • 1970-01-01
相关资源
最近更新 更多