Il tentativo di eseguire SBT su Ubuntu. (Errore: java.lang.NoClassDefFoundError: Scala / ScalaObject)

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

  •  26-09-2019
  •  | 
  •  

Domanda

Ho cercato sbt installazione per iniziare a utilizzare Scala 2.8 in Ubuntu. (Attualmente sto usando la versione 2.7.)

Quando lancio sbt dal terminale ottengo il seguente output:

$ 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

Tutte le idee che sto facendo male?

È stato utile?

Soluzione

Questo errore si verifica quando si utilizza una versione non corretta Scala. Dal momento che SBT gestisce Scala da sola, il mio suggerimento è che si Rimuovi qualsiasi Scala crea un pacchetto si potrebbe avere installato.

Altri suggerimenti

Provare una sbt riavvio dopo l'eliminazione:

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

Come descritto in sbt risoluzione dei problemi

Do è stata impostata la variabile d'ambiente $SCALA_HOME correttamente?

ho visto il href="http://ubuntuforums.org/archive/index.php/t-856370.html" rel="nofollow"> progetto ( in fondo alla pagina, non con SBT direttamente, ma con Scala), e qui è lo script che stanno ora utilizzando per assicurarsi che e impostare tutte le variabili Scala correlati:

(Il tutto script non è probabilmente rilevante per lo script SBT, ma ti dà un'idea su come impostare $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 $?
scroll top