Странное сообщение об ошибке: плохая символическая ссылка. Подпись в package.class относится к термину apache в пакете org, который недоступен

Когда я попытался скомпилировать простую программу типа "akka" (scala 2.10, akka, 2.1.0):

 scalac -cp "akka-actor_2.10-2.1.0.jar:akka-camel_2.10-2.1.0.jar" write2.scala

error: bad symbolic reference. A signature in package.class refers to term apache
in package org which is not available.
It may be completely missing from the current classpath, or the version on
the classpath might be incompatible with the version used when compiling package.class.
error: bad symbolic reference. A signature in package.class refers to term camel
in value org.apache which is not available.
It may be completely missing from the current classpath, or the version on
the classpath might be incompatible with the version used when compiling package.class.
write2.scala:21: error: bad symbolic reference. A signature in package.class refers to term model
in value org.camel which is not available.
It may be completely missing from the current classpath, or the version on
the classpath might be incompatible with the version used when compiling package.class.
val mina = system.actorOf(Props[MyEndPoint])

three errors found

Код в строке 21:

 val mina = system.actorOf(Props[MyEndPoint])

(та же программа была правильно скомпилирована в Eclipse, поэтому исходный код в порядке)

Скорее всего, какой-либо файл jar отсутствует в переменной -cp. Вопрос , что означает это странное/бесполезное сообщение об ошибке.

Спасибо, Томас

Ответы

Ответ 1

В сообщении говорится: "Нет пакета org.apache в моем пути к классам, и мне нужно его при чтении файла package.class". Перейдите -Ylog-classpath в scalac и посмотрите, что представляет собой реальный путь к классу, который попадает в компилятор.

Ответ 2

Мне это был JDK, не установленный на PATH ни JAVA_HOME

Вы можете добавить JAVA_HOME, чтобы указать на свою корневую папку JDK и добавить папку jdk/bin (которая включает javac) прямо в путь.

Вы можете обратиться к документам Oracle для инструкций о том, как добавить путь http://docs.oracle.com/javase/7/docs/webnotes/install/windows/jdk-installation-windows.html

Ответ 3

Первый пользователь Scala. У меня возникли проблемы с настройкой моего затмения, и я использовал:

Error:scalac: bad symbolic reference. A signature in package.class refers to type compileTimeOnly
in package scala.annotation which is not available.
It may be completely missing from the current classpath, or the version on
the classpath might be incompatible with the version used when compiling package.class.
Наконец, оказалось, что Scala тестовая версия 2.11 и версия компилятора должны совпадать. Скачан Scala версия 2.11-RC1

Ответ 4

Если в будущем это кому-нибудь поможет, у меня возникла проблема с приложением, которое я принял после добавления нового класса. Оказалось, что заглавные буквы в имени пакета в каждом классе в пакете и фактическая структура каталогов были разными. Как только я опустил весь каталог, он снова начал работать.