Intentar ejecutar SBT en Ubuntu. (Error: java.lang.NoClassDefFoundError: Scala / ScalaObject)

StackOverflow https://stackoverflow.com/questions/4219133

  •  26-09-2019
  •  | 
  •  

Pregunta

He intentado sbt instalación para comenzar a utilizar Scala versión 2.8 en Ubuntu. (Actualmente estoy usando la versión 2.7.)

Cuando corro sbt de la terminal me sale el siguiente resultado:

$ sbt
Project does not exist, create new project? (y/N/s) y
Name: HelloWorld
Organization: org
Version [1.0]: 
Scala version [2.7.7]: 
sbt version [0.7.4]: 
Getting Scala 2.7.7 ...
:: retrieving :: org.scala-tools.sbt#boot-scala
 confs: [default]
 2 artifacts copied, 0 already retrieved (6214kB/279ms)
java.lang.NoClassDefFoundError: scala/ScalaObject
 at java.lang.ClassLoader.defineClass1(Native Method)
 at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
 at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
 at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
 at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
 at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
 at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
 at java.lang.ClassLoader.defineClass1(Native Method)
 at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
 at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
 at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
 at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
 at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
 at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
 at java.lang.Class.forName0(Native Method)
 at java.lang.Class.forName(Class.java:247)
 at xsbt.boot.Provider$.classMissing$1(Provider.scala:71)
 at xsbt.boot.Provider$$anonfun$getMissing$1.apply(Provider.scala:72)
 at xsbt.boot.Provider$$anonfun$getMissing$1.apply(Provider.scala:72)
 at scala.List.filter(List.scala:859)
 at xsbt.boot.Provider$.getMissing(Provider.scala:72)
 at xsbt.boot.Provider$initialize.call(Provider.scala:45)
 at xsbt.boot.Provider$initialize.call(Provider.scala:32)
 at xsbt.boot.Locks$GlobalLock.withChannel$1(Locks.scala:63)
 at xsbt.boot.Locks$GlobalLock$$anonfun$withFileLock$1.apply(Locks.scala:67)
 at xsbt.boot.Locks$GlobalLock$$anonfun$withFileLock$1.apply(Locks.scala:67)
 at xsbt.boot.Using$.withResource(Using.scala:11)
 at xsbt.boot.Using$.apply(Using.scala:10)
 at xsbt.boot.Locks$GlobalLock.withFileLock(Locks.scala:67)
 at xsbt.boot.Locks$GlobalLock.liftedTree1$1(Locks.scala:45)
 at xsbt.boot.Locks$GlobalLock.withLock(Locks.scala:45)
 at xsbt.boot.Locks$.apply(Locks.scala:31)
 at xsbt.boot.Provider$class.$init$(Provider.scala:31)
 at xsbt.boot.Launch$ScalaProvider.<init>(Launch.scala:80)
 at xsbt.boot.Launch$$anonfun$1.apply(Launch.scala:72)
 at xsbt.boot.Launch$$anonfun$1.apply(Launch.scala:72)
 at xsbt.boot.Cache.newEntry(Cache.scala:17)
 at xsbt.boot.Cache.getFromReference(Cache.scala:13)
 at xsbt.boot.Cache.apply(Cache.scala:12)
 at xsbt.boot.Launch.getScala(Launch.scala:73)
 at xsbt.boot.Launch$.run(Launch.scala:48)
 at xsbt.boot.Launch$$anonfun$explicit$1.apply(Launch.scala:42)
 at xsbt.boot.Launch$$anonfun$explicit$1.apply(Launch.scala:42)
 at xsbt.boot.Launch$.launch(Launch.scala:57)
 at xsbt.boot.Launch$.explicit(Launch.scala:42)
 at xsbt.boot.Launch$.initialized(Launch.scala:38)
 at xsbt.boot.Launch$.parsed(Launch.scala:31)
 at xsbt.boot.Launch$.configured(Launch.scala:21)
 at xsbt.boot.Launch$.apply(Launch.scala:16)
 at xsbt.boot.Launch$.apply(Launch.scala:13)
 at xsbt.boot.Boot$.runImpl(Boot.scala:24)
 at xsbt.boot.Boot$.run(Boot.scala:19)
 at xsbt.boot.Boot$.main(Boot.scala:15)
 at xsbt.boot.Boot.main(Boot.scala)
Caused by: java.lang.ClassNotFoundException: scala.ScalaObject
 at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
 ... 62 more
Error during sbt execution: java.lang.NoClassDefFoundError: scala/ScalaObject

¿Alguna idea de lo que estoy haciendo mal?

¿Fue útil?

Solución

Este error ocurre cuando se utiliza una versión incorrecta Scala. Desde SBT gestiona Scala por su propia cuenta, mi sugerencia es que Eliminar Scala cualquier paquete que puede ser que haya instalado.

Otros consejos

Pruebe con un sbt reinicio después de eliminar:

  1. ~/.m2/repository
  2. ~/.ivy2/cache
  3. project/boot

Como se describe en SBT solución de problemas

¿Tiene establecer la variable de entorno $SCALA_HOME correctamente?

vi el proyecto Conky interfaz gráfica de usuario de Ubuntu tiene un problema similar ( parte inferior de la página, no con SBT directamente, pero con Scala), y aquí está la secuencia de comandos que ahora están utilizando para asegurarse y establecer todas las variables relacionadas Scala:

(El guión no todo es probablemente relevante para su escritura de SBT, pero te da una idea acerca de la configuración $SCALA_HOME)

#!/bin/bash

set -e

#-----------------------------------#
#             Functions             #
#-----------------------------------#

function copy_variables_file {
    # Copying variables.xml to ~/.conkygui
    if [ ! -d ~/.conkygui ]; then
        mkdir -v ~/.conkygui
    fi
    cp -vu /usr/share/doc/conkygui/variables.xml ~/.conkygui
}

function get_scala_home {
    # check if $SCALA_HOME is set
    if [ -z $SCALA_HOME ]; then
        # try to find it at common locations
        dists=('Fedora' 'Ubuntu')
        paths=('/usr/share/scala' '/usr/share/java')
        for indx in 0 1
        do
            SCALA_HOME=${paths[$indx]}  
            if [ -d $SCALA_HOME ]; then
                break
            fi
            SCALA_HOME=''
        done
    fi

    # check if $SCALA_HOME could be found
    if [ -z $SCALA_HOME ]; then
        echo '$SCALA_HOME is not set'
        exit 2
    else
        echo $SCALA_HOME
        return 0
    fi
}

function get_scala_library_path {
    SCALA_HOME=$1
    scala_library=$SCALA_HOME'/scala-library.jar'
    if [ -f $scala_library ] ; then
        echo $scala_library
        return 0
    fi
    # try with lib folder
    scala_library=$SCALA_HOME'/lib/scala-library.jar'
    if [ -f $scala_library ] ; then
        echo $scala_library
        return 0
    else
        echo 'error: scala-library.jar could not be found';
        exit 1
    fi
}

function get_classpath {
    SCALA_HOME=$1
    # Except for Scala the required libraries come
    # with Conky GUI and are located in the "lib" folder.
    lib_folder='/usr/share/conkygui'
    bsaf=$lib_folder'/lib/bsaf-1.9-RC3.jar'
    vldocking=$lib_folder'/lib/vldocking-3.0.0.jar'
    conkygui=$lib_folder'/conkygui.jar'
    libs=$bsaf':'$vldocking':'$conkygui
    scala_library=`get_scala_library_path $SCALA_HOME`
    classpath=$libs':'$scala_library
    echo $classpath
}

#-------------------------------#
#              RUN              #
#-------------------------------#

copy_variables_file

SCALA_HOME=`get_scala_home`
echo 'SCALA_HOME: '$SCALA_HOME

classpath=`get_classpath $SCALA_HOME`
echo 'CLASSPATH:  '$classpath

# start Conky GUI
java -cp $classpath controllers.ConkyGUI

exit $?
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top