Eclipse插件 - 无法解析Swing类引用

时间:2012-06-18 21:15:14

标签: java eclipse plugins

免责声明:以下两种情况都不属实:(1)Java是我的专长,(2)我是插件开发方面的专家。)

我的Eclipse插件项目包含5个插件。其中2个编译得很好。 3不包含org.eclipse.swt.widgetsorg.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,导入所有必需的库,构建顺序是正确的。)
  • 进口。校验! (是的。导入了正确的库,如对话框中所示。)
  • 的Manifest.MF。校验! (仔细检查清单文件以确保路径正确。所有三个项目都引用同一个JRE中的同一文件。)
  • plugin.xml中。校验! (是的,文件很好。)
  • .ClassPath文件。校验! (这里也没问题.classpath文件都很好。)
  • build.properties文件。校验! (这里也没有惊喜。)

我用Google搜索并堆叠溢出,直到我的眼睛流血。没有一个典型的建议似乎有所帮助。

但是,我确定,通常的事实将证明是这样的。 (在所有条件相同的情况下,答案通常都是简单,愚蠢,非常明显。

有人可以提出一些我尚未看过的内容吗?我非常愿意提供您可能需要的任何信息。

P.S。我可能会注意到 way 有太多的地方需要配置插件的依赖项吗?好极了moogly。

3 个答案:

答案 0 :(得分:7)

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

  • 在eclipse中,转到帮助 - >偏好 - >目标平台。
  • 选择目标平台,然后单击[编辑...]。
  • 在对话框中,选择“环境”标签。

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

在你的情况下,你有一个win32.x86 swt jar。如果您在64位窗口上运行,并且Architecture字段为空,则不会加载32位swt jar。您有两种方法可以解决任何差异:

  1. 安装eclipse平台包。它将包含所有平台的所有swt jar。
  2. 使“目标环境”字段与您可用的swt jar相匹配。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

  1. 打开eclipse IDE
  2. 选择菜单项目->清洁
  3. 关闭Eclipse IDE
  4. 从/home/user/.swt中删除.swt
  5. 重新打开日食并修复消息