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 がプロジェクトをコンパイルするとき、このバンドルはクラスパス上にないように見えます。

これは Tycho のバグですか?回避策はありますか?

すべてのソースを 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 に答える