библиотеки SWT не могут быть решены - PullRequest
0 голосов
/ 10 октября 2018

Я использую зависимость ниже 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 не может быть решен "

Какая зависимость maven подходит для работы с приложением swt Desktop?

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Если вам нужно решить зависимости SWT с Maven для Windows, Linux и Mac, вы можете использовать метод, описанный Оливье Кайю здесь: 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, лучше, чем предложенная в ошибка 510186, комментарий 12 .Исключение org.eclipse.platform:org.eclipse.swt лучше передает намерение (эта зависимость бесполезна и вызывает некоторые проблемы, поэтому давайте скажем Maven, что она нам на самом деле не нужна)

В основном вам необходимо установить соответствующий профиль Mavenдля правильной ОС и вставьте это в свой пом:

<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>
0 голосов
/ 10 октября 2018

Вы не указали, из какого репозитория вы пытаетесь извлечь, но SWT недоступен в Maven Central.Самый простой метод, который я знаю, это использовать 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...