【问题标题】:Eclipse Plugin - Unable to Resolve Swing Class ReferencesEclipse 插件 - 无法解析 Swing 类引用
【发布时间】:2012-06-20 21:57:16
【问题描述】:

免责声明:以下都不正确:(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,导入所有必要的库,构建顺序是正确的。)
  • 进口。查看! (是的。正确的库已导入,如对话框中所示。)
  • 清单.MF。查看! (仔细检查清单文件以确保路径正确。所有三个项目都从同一个 JRE 引用同一个文件。)
  • 插件.XML。查看! (是的,文件很好。)
  • .ClassPath 文件。查看! (这里也没有问题。类路径文件都很好。)
  • build.properties 文件。查看! (这里也不奇怪。)

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

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

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

附:我可能会注意到有太多方式的地方可以配置插件的依赖关系吗?伟大的 googly moogly。

【问题讨论】:

    标签: java eclipse plugins


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 谢谢!我已升级到 64 位机器,但保留旧项目作为迁移的一部分。并升级了 Eclipse...我将架构从 x86 更改为 x86_64,我的问题得到了解决。
    • 我也是 ;-) 但是我在目标环境中也有一个旧的 deltapack 引用,这使得它有点复杂。但是删除它并设置架构解决了所有问题。
    【解决方案2】:

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

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

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

    【讨论】:

    • 奇怪的是,我使用 JarFinder 查看有问题的文件确实是 在类路径上。它想要的文件是org.eclipse.swt.win32.win32.x86_3.5.2.v3557f-RCP20100710-0200.jar,它明确包含在每个无法编译的插件的 MANIFEST.MF 中。
    • 值得注意的是,我们的特定 JRE 是由 Lotus Notes 提供的(诅咒!),所以 JAR 文件名有细微的变化。
    • 我的猜测是您正在寻找的 jar 可能是 swt.jar:jarfinder.com/index.php/jars/versionInfo/452 另外我个人的建议是尽可能迁移到 Maven,因为它通过依赖管理让生活变得更轻松。
    • 我建议不要使用 Maven 来管理 Eclipse 插件依赖项 - 除非您相当了解 Eclipse 和 Maven。对于这个不了解 Java 的人来说,坚持使用 Eclipse 提供的向导是他们最好的选择。试图了解 Tycho 并配置构建环境会让他们头晕目眩。
    【解决方案3】:
    1. 打开 Eclipse IDE
    2. 选择菜单项目->清理
    3. 关闭 Eclipse IDE
    4. 从 /home/user/.swt 中删除 .swt
    5. 重新打开 Eclipse 并修复消息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-19
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多