КлассNotFoundException: scala.PreDef $issue
Привет, ребята, я пытаюсь упаковать простой исполняемый Jar, написанный в Scala, через функцию Eclipse Export.
При попытке выполнить Jar из cmd java -jar test2.jar
Я получаю следующее.... Любые идеи? Спасибо.
Caused by: java.lang.NoClassDefFoundError: scala/Predef$
at Parser.Test(Parser.scala:5)
at Main.main(Main.java:12)
... 5 more
Caused by: java.lang.ClassNotFoundException: scala.Predef$
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 7 more
Ответы
Ответ 1
Вам просто нужно добавить банку библиотеки scala в путь к классам.
Вы можете сделать это следующим образом (предполагая, что в <каталоге > scala -library.jar "находится текущий каталог):
java -cp scala-library.jar -jar test2.jar
Документацию для tha java
comamnd можно найти здесь: http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html
Ответ 2
Вы также можете упаковать библиотеку scala вместе с вашим проектом. См.
Ответ 3
Я сделал удален "Scala контейнер библиотеки" из проекта.
Далее - добавить необходимую scala библиотеку (scala -library.jar) в Java BuildPath (в свойствах для) как "Добавить внешние JAR..." в my (не как ссылка на scala lib). И включите их всех в "Заказ и экспорт",
Наконец - выполните Экспорт для проекта с параметром "Необходимые пакеты для создания JAR"
и это отлично работает:)
Ответ 4
для меня я использовал jdk 11 и контейнер библиотеки Scala 2.12.3, и когда я перешел на jdk 8, он работает нормально, это из-за поддержки версии jdk11 scala Совместимость JDK
щелкните правой кнопкой мыши проект, путь сборки, настройте путь сборки, отредактируйте свой jdk до значения меньше 11