Смешение путей к классам Scala java.lang.NoClassDefFoundError - PullRequest
0 голосов
/ 10 января 2011

Я пытаюсь что-то сделать в Scala с помощью аппаратной библиотеки. Библиотека находится в / Приложения / Аппарат. Компиляция происходит нормально, импорт в порядке, но я все равно получаю эту ошибку при запуске.

scalac -classpath /Applications/apparat/\* SimpleObject.scala 
scala -cp . SimpleObject hello.swf

java.lang.NoClassDefFoundError: apparat/utils/TagContainer$

Сценарий:

  import apparat.utils.TagContainer


  object SimpleObject {
      def main(args : Array[String]) : Unit = {

        val tags = TagContainer.fromFile( args(0) )

     }
  }

Я почти уверен, что что-то пропустил при компиляции или при запуске. Если я использую интерпретатор командной строки, тогда скрипт работает нормально, и я не получаю никаких ошибок. Например, можно сделать это:

scala -cp /Applications/apparat/\*
Welcome to Scala version 2.8.0.RC3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_22).
Type in expressions to have them evaluated.
Type :help for more information.

scala> import apparat.utils.TagContainer
import apparat.utils.TagContainer

scala> val tag = TagContainer.fromFile("hello.swf")
tag: apparat.utils.TagContainer = apparat.utils.TagContainer@533790eb

Ответы [ 2 ]

0 голосов
/ 10 января 2011

понял это. Нужно поместить текущий каталог в -cp (:.), Как говорит Даниэль при компиляции. Кроме того, при запуске -cp должен указывать на тот же путь к классу.

0 голосов
/ 10 января 2011
scala -classpath /Applications/apparat/\*:. SimpleObject hello.swf

хотя я думал, что подстановочные знаки недопустимы в классовых путях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...