我正在使用下面的 maven 依赖来开发 swt 应用程序。
<dependency>
<groupId>org.eclipse.platform</groupId>
<artifactId>org.eclipse.swt</artifactId>
<version>3.108.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
但是当我尝试导入以下包时,
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
Run Code Online (Sandbox Code Playgroud)
我收到类似“无法解析导入 org.eclipse”的错误消息
使用 swt 桌面应用程序的正确 maven 依赖项是什么?
如果您需要解决SWT
Windows、Linux 和 Mac 的 Maven 依赖项,您可以使用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 中建议的策略 ,即exclude
org.eclipse.platform:org.eclipse.swt
,比bug 510186 评论 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>
Run Code Online (Sandbox Code Playgroud)
您尚未指定要尝试从哪个存储库中提取数据,但 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>
Run Code Online (Sandbox Code Playgroud)
然后是您需要支持的特定于平台的依赖项。例如:
<dependency>
<groupId>org.eclipse.swt</groupId>
<artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>
<version>${swt.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)