swt库无法解析

时间:2018-10-10 14:33:36

标签: maven swt

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

2 个答案:

答案 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>