Почему я получаю `java.lang.NoClassDefFoundError: scala / Function1″, когда я запускаю свой код в ScalaIDE?

#java #scala #maven #noclassdeffounderror #scala-ide

#java #scala #maven #noclassdeffounderror #scala-ide

Вопрос:

Вот простой тест, который я использую для вызова метода Scala из Java:

 public static void main(String args[]) {
  java.util.Map<String, java.util.List<String>> rec = news.recommend.DriverObj.runTest();     
  System.out.println(rec.toString());
}
 

Вот определение метода Scala:

 def runTest: java.util.Map[String, java.util.List[String]] = {
  new java.util.HashMap[String, java.util.List[String]]
}
 

Но он выдает ошибку:

 Exception in thread "main" java.lang.NoClassDefFoundError: scala/Function1
    at news.recommend.DriverObj.runTest(DriverObj.scala)
 

Что я должен сделать, чтобы это работало гладко?

Обновление: я запускаю его через Eclipse, и мой путь сборки содержит :

введите описание изображения здесь

Итак, библиотека Scala должна быть найдена?

Комментарии:

1. Что находится на вашем пути к классу, когда вы его запускаете?

2. Мне кажется, что вы не включаете jar для библиотеки scala в путь к классам. scala включает его автоматически, java не включает.

3. @Dave Newton пожалуйста, посмотрите Обновление вопроса

4. Путь сборки и путь выполнения не обязательно одно и то же, я тоже считаю, что библиотека Scala не находится в пути к классу времени выполнения.

5. @StackG, вы можете вручную добавить scala-library.jar в свой проект Eclipse в качестве библиотеки, как вы добавляете любой обычный jar при использовании Java.

Ответ №1:

добавление зависимости Scala в сборку maven может решить проблему :

 <dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-library</artifactId>
    <version>2.10.3</version>
</dependency>
 

Комментарии:

1. Мне это не помогло. Я запускаю Gatling. Похоже, Gatling по-другому управляет своим путем к классу.

2. У меня уже была эта зависимость в списке, и у меня все еще была проблема. Решение от @Kuang Wenyi сработало для меня.

Ответ №2:

Что касается меня, в конфигурации «Конфигурации запуска / отладки» [idealJ]

не забудьте выбрать «Включить зависимости с «предоставленной» областью»

Комментарии:

1. Сработало для меня. Спасибо!

2. У меня тоже сработало, но почему?

3. @Filip Я считаю, что есть какая-то проблема между IdeaJ и maven.