Как использовать Swing со Scala 2.11 в Eclipse?

Я только что обновил Scala до версии 2.11 и теперь не могу импортировать scala.swing. Как мне оправиться от этого? Могу ли я просто загрузить файл jar или что-то в этом роде? Надеюсь, мне не придется ничего строить.

Изменить: решение должно использоваться в Eclipse без создания чего-либо из исходного кода, если это возможно.


person David Matuszek    schedule 14.02.2015    source источник
comment
Как вы строите свои scala-проекты?   -  person Michael Zajac    schedule 15.02.2015
comment
Я использую Scala IDE (Eclipse), сборка 4.0.0 vfinal (Luna), с Java 1.8, в Windows 7.   -  person David Matuszek    schedule 15.02.2015


Ответы (4)


Вот пример того, как для этого обновить ваши зависимости.

В версии 2.11 многие части стандартной библиотеки были разделены на отдельные модули, включая элементы Swing.

person Hugh    schedule 15.02.2015
comment
Эта статья выглядит так, как будто это то, что мне нужно, если бы я мог ее понять. К сожалению, я использую Scala так же, как использую Java, то есть позволяю Eclipse позаботиться обо всем строительстве за меня. - person David Matuszek; 15.02.2015
comment
Эта статья выглядит так, как будто это то, что мне нужно, если бы я мог ее понять. К сожалению, я использую Scala так же, как использую Java, то есть позволяю Eclipse позаботиться обо всем строительстве за меня. Я думаю, что это означает для меня то, что я больше не могу использовать Scala с Swing, пока не изучу SBT, Maven и, возможно, некоторые другие инструменты ИТ-уровня, которые меня не интересуют. Это позор, потому что мне больше нравится Scala. чем Java, но Swing в Java просто работает. - person David Matuszek; 15.02.2015
comment
Я не знаком с тем, как Eclipse управляет зависимостями, но все, что говорится в статье, это то, что вам нужно добавить внешнюю зависимость от библиотеки Scala Swing точно так же, как вы добавляете зависимость от внешней библиотеки в Java. Я предполагаю, что статья касается только обычных систем сборки, потому что обычно люди, использующие проекты IDE, имеют IDE, которая позаботится об управлении зависимостями. - person Hugh; 15.02.2015
comment
Хорошо, спасибо! Да, все, что мне нужно было сделать, это найти файл jar в дистрибутиве Scala и добавить его в путь сборки. Теперь я чувствую себя глупо из-за того, что запутался во всех вещах, связанных с изменением файлов конфигурации и использованием SBT. Разве серьезные пользователи Scala (которыми я себя не утверждаю) не используют IDE? В любом случае, это была вся подсказка, которая мне понадобилась, чтобы мои старые программы снова заработали, большое спасибо! - person David Matuszek; 15.02.2015
comment
Как правило, да, IDE используются, но вместо использования собственных инструментов сборки IDE (что неудобно для таких вещей, как непрерывная интеграция — вы не обязательно хотите, чтобы ваш сервер сборки запускал Eclipse только для тестирования вашей программы), как правило, внешние инструменты сборки вместо. Я думаю, что SBT и Maven наиболее распространены для Scala, хотя я слышал хорошие отзывы о Gradle. Обратите внимание, что это не исключает использования IDE! И IntelliJ, и Eclipse с радостью импортируют, например. проект Maven. - person Hugh; 15.02.2015

У меня такая же проблема, но после выполнения некоторого шага мне удалось использовать Scala.swing.

Вот несколько шагов, которым я следую, надеюсь, это поможет вам.

1) добавить внешнюю банку в javaBuildPath (щелкните правой кнопкой мыши Project -> Properties-> javaBuildPath-> добавить внешние банки -> добавить scala.swing.x)

2) после этого я преодолел ошибки typeNotFound

3) создайте класс, в котором вы хотите сделать код для свинга

4) создайте объект, а в main() вы должны создать объект выше класса по новому ключевому слову

5) После этого он позволяет вам получить доступ к методам SimpleSwingApplication, поэтому вызовите startup().

6) Вот и все,

Рассмотрим следующий пример, если он может помочь вам понять, что я хочу сказать,

 class FirstUI  extends SimpleSwingApplication
{

       def top= new MainFrame {
       title = "GUI Program #1"
       preferredSize = new Dimension(320, 240)
       contents = new Label("Here is the contents!")

  }

}

    object First
    {
      def main(str: Array[String])
      {
            val f =new FirstUI
            f.startup(str)
      }
    }

сохраните этот файл как First.scala и запустите его. Надеюсь, это вам поможет.

person Dhara N.    schedule 07.03.2017

Просто добавьте scala-swing.jar к зависимостям вашего проекта.

Вы можете получить предварительно скомпилированный файл с веб-страницы проекта. В верхней части файла README у вас есть синие значки, указывающие на существующие выпуски. Прямо сейчас текущий выпуск предназначен для Scala v2.11. На этой странице ссылка для загрузки jar-файла находится справа.

После того, как вы загрузили файл jar, откройте eclipse и перейдите к свойствам вашего проекта (щелкните правой кнопкой мыши корень проекта/Свойства). На вкладке Путь сборки Java добавьте путь к только что загруженному файлу.

Обратите внимание, что в моем случае мне также пришлось добавить scala-library.jar (находится в zip-файле, который можно загрузить с главной страницы Scala). Вкладка Проблема в Eclipse помогла мне отладить эту проблему.

person Martin Quinson    schedule 01.11.2015

Я много боролся с этим безобразием. Мне также нужно было включить scala-swing.jar и scala-library.jar из /usr/share/java/scala/ в качестве внешних JAR-файлов в проект. (В свойствах> Путь сборки Java> Библиотеки)

Тогда и системная библиотека JRE не может быть просто доступной. Например, «Рабочее пространство по умолчанию: JRE (java-1.8.0-openjdk-1.8.0.212.b04-0.fc29.x86)» не сработало, но «Среда выполнения: JavaSE-1.8 (java-1.8.0-openjdk- 1.8.0.212.b04-0.fc29.x86_64)" сработало. Я не знаю, в чем разница между добавлением его как «рабочее пространство по умолчанию» и «среда выполнения».

Также, по крайней мере, в Fedora 29 Eclipse получал ошибки, если я не добавлял «Контейнер библиотеки Scala», хотя у меня уже был scala-library.jar в качестве внешнего JAR.

Но затем возникли ошибки при компиляции scala: «Версия библиотеки scala, найденная в пути сборки plotchartlib (2.10.6), предшествует версии, предоставленной scala IDE (2.12.3). Настройка выбора установки Scala для соответствия».

Что мне еще нужно было сделать, так это в свойствах> Путь сборки Java> Порядок и экспорт, мне пришлось поместить «контейнер библиотеки Scala [2.12.3]» внизу, а scala-library.jar над ним.

Я понятия не имею, почему это было так сложно, потому что в Fedora 29 настроен Eclipse, но мне потребовалось 2 рабочих дня, чтобы заставить его работать.

person zimon    schedule 14.05.2019