5

我想为org.eclipse.swt片段创建一个扩展。我创建了一个swt.extension包含以下 MANIFEST.MF 的包:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Extension
Bundle-SymbolicName: swt.extension
Bundle-Version: 1.0.0.qualifier
Fragment-Host: org.eclipse.swt;bundle-version="3.102.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.7

另外,我创建了一个从 SWT 扩展接口的接口:

public interface IExtendedStyleTextContent extends org.eclipse.swt.custom.StyledTextContent {
}

当我使用 tycho ( mvn clean install) 构建项目时,会出现以下错误:

1. ERROR in C:\<path>\tycho-fragment-to-fragment-dependency\swt.extension\src\org\example\tycho_example\IExtendedStyleTextContent.java (at line 3)

public interface IExtendedStyleTextContent extends org.eclipse.swt.custom.StyledTextContent {

                                                   ^^^^^^^^^^^

org.eclipse cannot be resolved to a type

tycho 似乎只解析 org.eclipse.swt jar。这是一个主机包,它不包含任何类。实际实现在 org.eclipse.swt.win32.win32.x86_64 片段包中。当 tycho-compiler-plugin 编译项目时,看起来这个包不在类路径上。

这是第谷的错误吗?他们有任何解决方法吗?

我已将所有来源放在 GitHub 上:https ://github.com/orionll/tycho-fragment-to-fragment-dependency

我使用 Maven 3.1.0

4

2 回答 2

6

因此,在邮件列表中找到了解决此问题的方法:http: //dev.eclipse.org/mhonarc/lists/tycho-user/msg03277.html

要解决此问题,应将以下部分添加到 POM 和 build.properties:

<build>
  <plugins>
    <plugin>
      <groupId>org.eclipse.tycho</groupId>
      <artifactId>target-platform-configuration</artifactId>
      <version>${tycho-version}</version>
      <configuration>
        <dependency-resolution>
          <extraRequirements>
            <requirement>
              <type>eclipse-plugin</type>
              <id>org.eclipse.swt.win32.win32.x86_64</id>
              <versionRange>[3.0.0,4.0.0)</versionRange>
            </requirement>
          </extraRequirements>
        </dependency-resolution>
      </configuration>
    </plugin>
  </plugins>
</build>

build.properties:

extra.. = platform:/fragment/org.eclipse.swt.win32.win32.x86_64

我还更新了 GitHub 存储库

于 2013-08-11T12:38:30.470 回答
4

这不是一个错误,而是 PDE/Tycho 设计的一个基本问题:构建依赖项尽可能接近运行时依赖项。在这种情况下,您需要添加一个在运行时没有相应依赖项的构建依赖项,因此无法通过 OSGi 清单声明。

以下邮件列表消息似乎为这个问题提供了解决方法:http: //dev.eclipse.org/mhonarc/lists/tycho-user/msg03277.html

于 2013-08-11T11:38:29.617 回答