Der Versuch, sbt auf Ubuntu zu laufen. (Fehler: java.lang.NoClassDefFoundError: scala / ScalaObject)
Frage
Ich habe versucht, Installation sbt
starten 2.8 mit Scala Version in Ubuntu. (Ich verwende derzeit Version 2.7).
Wenn ich sbt
vom Terminal betreibe ich folgende Ausgabe:
$ 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
Alle Ideen, was ich falsch mache?
Lösung
Dieser Fehler tritt auf, wenn eine falsche Scala Version verwendet wird. Seit SBT Scala auf eigene schafft, mein Vorschlag ist, dass Sie Entfernen jede Scala-Paket können Sie installiert haben.
Andere Tipps
Versuchen Sie einen Neustart sbt
nach Löschen:
-
~/.m2/repository
-
~/.ivy2/cache
-
project/boot
beschrieben, wie in sbt Fehlerbehebung
Haben Sie Ihre $SCALA_HOME
Umgebungsvariable richtig gesetzt haben?
sah ich die Conky GUI Ubuntu-Projekt ein ähnliches Problem mit ( unten auf der Seite, nicht mit sbt direkt, sondern mit Scala), und hier ist das Skript sie nun all Scala bezogenen Variablen, um sicherzustellen, und legen sie verwenden:
(Das ganze Skript ist wahrscheinlich nicht relevant für Ihre sbt Skript, aber es gibt Ihnen eine Vorstellung über $SCALA_HOME
Einstellung)
#!/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 $?