【问题标题】:Eclipse RCP: add external directories to classpathEclipse RCP:将外部目录添加到类路径
【发布时间】:2013-07-16 14:32:58
【问题描述】:

我有一个 Eclipse RCP 应用程序,我需要在其中添加一些外部 jar 文件。 问题是我不能简单地将罐子添加到插件中并将这个插件添加到我的 RCP 应用程序中。

出于多种原因,我必须只添加 jar 文件所在目录的路径。这些 jar 文件必须在启动时添加到程序的类路径中。 并且目录的路径是一个变量(例如,它们被放置在一个文件中)。

是否有可能以某种方式将外部路径添加到类路径中?

【问题讨论】:

  • 我可以在生成的 eclipise.ini s.th 中添加一些东西吗?我可以扩展类路径吗?
  • 嗯???自定义类加载器可能吗?然后您可以共享 api 接口来访问这些类或使用反射。此外,如果这些目录包含捆绑包,那么您可以通过 Equinox 框架安装它。
  • 如果你选择 OSGi 方式然后看BundleContext.installBundle(location, stream)

标签: eclipse classpath rcp


【解决方案1】:

添加外部目录到classpath,有三种方法:

>  **1. System.setProperty("java.class.path",
> System.getProperty("java.class.path")+";"+"directory");**
  1. 文件 file = new File("/home/../my.jar"); URLClassLoader 类加载器 = (URLClassLoader) ClassLoader.getSystemClassLoader(); 方法 add = URLClassLoader.class.getDeclaredMethod("addURL", new Class[] { URL.class }); add.setAccessible(true); add.invoke(classloader, new Object[] { file.toURI().toURL() });

  2. 在 .bashrc 中配置类路径变量

【讨论】:

  • 第一件事显然不起作用。第三个选项相当奇怪。第二件事在某种程度上起作用,但在我的情况下,当调用动态添加的 jar 的方法时,我得到一个 NoSuchMethodError。
  • 你是对的,系统在启动时读取属性,所以在运行时修改它不起作用。
猜你喜欢
  • 1970-01-01
  • 2019-09-01
  • 2014-09-29
  • 2012-03-14
  • 2016-06-03
  • 2023-03-27
  • 2011-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多