我想为org.eclipse.swt
创建一个扩展,作为一个片段。我已经创建了一个带有以下MANIFEST.MF的bundle<code>swt.extension</code>:
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净安装
)构建我的项目时,会发生以下错误:
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编译器插件编译项目时,这个捆绑包似乎不在类路径上。
这是第谷的bug吗?他们有什么变通办法吗?
我已经把所有的源代码放在GitHub上了:https://GitHub . com/Orion ll/tycho-fragment-to-fragment-dependency
我使用maven 3.1.0
因此,在邮件列表中找到了解决这个问题的方法:http://dev . eclipse . org/mhonarc/lists/tycho-user/msg 03277 . 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存储库
这不是一个错误,而是 PDE/Tycho 设计的一个基本问题:构建依赖项尽可能接近运行时依赖项。在这种情况下,您需要添加一个在运行时中没有相应依赖项的构建依赖项,因此无法通过 OSGi 清单声明。
以下邮件列表消息似乎提供了解决此问题的方法:http://dev.eclipse.org/mhonarc/lists/tycho-user/msg03277.html