Странное сообщение об ошибке: неверная символическая ссылка. Подпись в 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. Вопрос в том, что означает это странное / бесполезное сообщение об ошибке.

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

3 ответа

Решение

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

Для меня это был 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

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

Впервые пользователь 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

Другие вопросы по тегам