Плагин Scala Eclipse java.lang.ClassNotFoundException - PullRequest
9 голосов
/ 13 марта 2012

Я использую версию eclipse: 3.7.2 с Scala IDE для Eclipse 2.1.0.nightly-2_09-201203121521-6e8582e. Java-версия 1.6.0_31. ОС Ubuntu 11.10.

Я искал решения этой проблемы, но пока не нашел. Я надеюсь, что нет очевидного ответа, который я пропустил.

У меня есть этот класс ( обратите внимание на пакет ):

package model.x.y

import org.scalatest.FunSuite
import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner

@RunWith(classOf[JUnitRunner])
class GibberishTestSuite extends FunSuite {
  test("Check Gibberish") {
    assert("blah" === "blah")
  }
}

Я также использую gradle, и исходный путь выглядит следующим образом ( обратите внимание, что пакет не соответствует иерархии каталогов ):

.../src/test/scala/model/GibberishTest.scala

Eclipse и Gradle генерируют файлы классов, отвечающих ядру:

bin/model/x/y/GibberishTestSuite.class
build/classes/test/model/x/y/GibberishTestSuite.class

Это нормально работает через gradle, но когда я пытаюсь запустить в затмении, я получаю

Class not found model.GibberishTestSuite
java.lang.ClassNotFoundException: model.GibberishTestSuite
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)

Если я поменяю пакет на

package model

, так что иерархия каталогов и имя пакета совпадают с , тогда я могу запустить модульный тест в eclipse. В scala допустимо, чтобы структура пакета и структура каталога не совпадали. Однако, несоответствие, похоже, сбивает с толку затмение или плагин.

Я что-то не так делаю? Я пропускаю некоторые нюансы конфигурации? Эта функция языка Scala не поддерживается в Eclipse? Будет ли он поддерживаться в какой-то момент?

Спасибо.

1 Ответ

7 голосов
/ 13 марта 2012

Это проблема Eclipse (JDT), а не проблема Scala / scala-ide.

В Eclipse возникла ошибка ( Дерево проводника пакетов соответствует объявленному пакету ),но в основном Eclipse предполагает, что иерархия соответствует именам пакетов.В конечном итоге это будет исправлено в Scala-ide, но модель необходимо изменить, чтобы удалить зависимость от JDT.Если вы хотите, чтобы это было исправлено, хорошей идеей будет добавить свой голос к вышеуказанному вопросу.

...