无法解析 swt 库

Har*_*hna 5 swt maven

我正在使用下面的 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 依赖项是什么?

Lor*_*uro 5

如果您需要解决SWTWindows、Linux 和 Mac 的 Maven 依赖项,您可以使用Olivier Cailloux描述的技术:https : //bugs.eclipse.org/bugs/show_bug.cgi ? id = 520337#c0

主要问题是特定于平台的构建(例如,org.eclipse.swt.gtk.linux.x86_64org.eclipse.swt依赖于某些通用构建(),而后者又依赖于特定于平台的构建 [...]

我相信https://github.com/oliviercailloux/java-course/tree/master/SWT#maven 中建议的策略 ,即excludeorg.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)


avo*_*jak 1

您尚未指定要尝试从哪个存储库中提取数据,但 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)