3

免责声明:以下都不正确:(1)Java 是我的强项,(2)我是插件开发方面的专家。)

我的 Eclipse 插件项目包括 5 个插件。其中2个编译得很好。3 不包括对org.eclipse.swt.widgetsororg.eclipse.swt.graphics包中的类的依赖项。(非常烦人的)编译时错误消息是:

The type org.eclipse.swt.widgets.Control cannot be resolved. 
It is indirectly referenced from required .class files.

现在,我已经带着一把细齿梳子走过了这个工作区。我已经检查并重新检查了以下内容:

  • 类路径。查看!(适当的 JRE 和 JDK 在 Windows PATH 上。)
  • 依赖关系。查看!(包括所有库。)
  • 构建路径。查看!(使用正确的 JRE,导入所有必要的库,构建顺序是正确的。)
  • 进口。查看!(是的。正确的库被导入,如对话框中所示。)
  • 清单.MF。查看!(仔细检查清单文件以确保路径正确。所有三个项目都从同一个 JRE 引用同一个文件。)
  • 插件.XML。查看!(是的,文件很好。)
  • .ClassPath 文件。查看!(这里也没有问题。类路径文件都很好。)
  • build.properties 文件。查看!(这里也没有惊喜。)

我用谷歌搜索和stackoverflow,直到我的眼睛在流血。典型的建议似乎都没有帮助。

然而,我敢肯定,通常的事实将在这里得到证明。(在所有条件相同的情况下,答案通常是简单、愚蠢且显而易见的。

有人可以建议我还没有看过的东西吗?我非常愿意提供您可能需要的任何信息。

PS 我可能会注意到有太多的地方可以为插件配置依赖项伟大的咕咕咕咕咕咕。

4

3 回答 3

7

您的目标平台与您环境中可用的 swt 插件之间存在脱节。

  • 在 Eclipse 中,转到帮助 -> 首选项 -> 目标平台。
  • 选择您的目标平台并单击[编辑...]。
  • 在对话框中,选择“环境”选项卡。

“目标环境”中的字段将用于加载您的 swt 插件。未填写的任何字段将默认为当前环境检测到的值。

在您的情况下,您有一个 win32.x86 swt jar。如果您在 64 位 Windows 上运行,并且架构字段为空白,则您的 32 位 swt jar 将不会加载。您有两个选项来解决任何差异:

  1. 安装 Eclipse 平台包。它将包含所有平台的所有 swt jar。
  2. 使“目标环境”字段与您可用的 swt jar 匹配。
于 2013-04-25T20:20:10.370 回答
1

这基本上意味着它是一个间接的不满足的依赖关系:您正在使用的库中的一个类需要在类路径上存在一些其他类:)

现在我不知道你如何管理你的依赖项(maven 或手动),但作为一个起点,如果你还没有它,你可以使用 jarfinder.com 来查找和下载必要的库: http://www.jarfinder。 com/index.php/java/info/org.eclipse.swt.widgets.Control

如果您使用 Maven,您应该查看日志,因为它会尝试下载所有必要的库,包括依赖项。因此,如果出现任何问题,它应该在日志中指出连接问题或由于其他原因无法下载人工制品。

于 2012-06-18T21:22:53.790 回答
1
  1. 打开 Eclipse IDE
  2. 选择菜单项目->清理
  3. 关闭 Eclipse IDE
  4. 从 /home/user/.swt 中删除 .swt
  5. 重新打开eclipse并修复消息
于 2020-07-28T03:39:45.797 回答