我正在使用下面的maven依赖关系来开发swt应用程序。
<dependency>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.swt</artifactId>
<version>3.108.0</version>
</dependency>
但是当我尝试导入以下软件包时,
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
我收到类似“无法解决导入org.eclipse”的错误
与swt桌面应用程序一起使用的正确的maven依赖是什么?
答案 0 :(得分:1)
如果您需要在Windows,Linux和Mac上使用Maven解决SWT
依赖性,则可以使用Olivier Cailloux描述的技术:https://bugs.eclipse.org/bugs/show_bug.cgi?id=520337#c0:
主要问题是平台特定版本的依赖性 (例如,
org.eclipse.swt.gtk.linux.x86_64
) (org.eclipse.swt
),这又取决于特定于平台的版本 [...]我相信该策略建议 https://github.com/oliviercailloux/java-course/tree/master/SWT#maven, 也就是说,排除
org.eclipse.platform:org.eclipse.swt
比 bug 510186 comment 12中建议的内容。不包括org.eclipse.platform:org.eclipse.swt
传达了更好的意图(这 依赖性没有用,会引发一些问题,所以让我们来告诉 Maven,我们真的不需要它)
基本上,您需要为正确的操作系统设置相应的Maven配置文件,并将其插入到pom中:
<profiles>
<profile>
<id>swt-unix</id>
<activation>
<os>
<family>unix</family>
</os>
</activation>
<properties>
<swt.artifactId>org.eclipse.swt.gtk.linux.x86_64</swt.artifactId>
<env>linux</env>
</properties>
<dependencies>
<dependency>
<groupId>org.eclipse.platform</groupId>
<artifactId>${swt.artifactId}</artifactId>
<version>3.108.0</version>
<optional>true</optional>
<exclusions>
<exclusion>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.swt</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</profile>
<profile>
<id>swt-mac</id>
<activation>
<os>
<family>mac</family>
</os>
</activation>
<properties>
<swt.artifactId>org.eclipse.swt.cocoa.macosx.x86_64</swt.artifactId>
<env>mac</env>
</properties>
<dependencies>
<dependency>
<groupId>org.eclipse.platform</groupId>
<artifactId>${swt.artifactId}</artifactId>
<version>3.108.0</version>
<optional>true</optional>
<exclusions>
<exclusion>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.swt</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</profile>
<profile>
<id>swt-windows</id>
<activation>
<os>
<family>windows</family>
</os>
</activation>
<properties>
<swt.artifactId>org.eclipse.swt.win32.win32.x86_64</swt.artifactId>
<env>windows</env>
</properties>
<dependencies>
<dependency>
<groupId>org.eclipse.platform</groupId>
<artifactId>${swt.artifactId}</artifactId>
<version>3.108.0</version>
<optional>true</optional>
<exclusions>
<exclusion>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.swt</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</profile>
</profiles>
答案 1 :(得分:0)
您尚未指定要从中提取哪个存储库,但Maven Central无法提供SWT。我知道最简单的方法是使用https://github.com/maven-eclipse/maven-eclipse.github.io。
您可以添加存储库:
<repositories>
<repository>
<id>maven-eclipse-repo</id>
<url>http://maven-eclipse.github.io/maven</url>
</repository>
</repositories>
然后是您需要支持的特定于平台的依赖项。例如:
<dependency>
<groupId>org.eclipse.swt</groupId>
<artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>
<version>${swt.version}</version>
</dependency>