为此,我使用sbt在jar文件中打包了一个应用程序。 当我从IDE(IntelliJ)运行应用程序时,它没有问题。 但是,当我尝试直接运行jar时,我有两个不同的问题。
当我从spark-submit运行它时,我得到:
[cloudera@quickstart bin]$ spark-submit --class com.my.app.main --master local[0] /home/cloudera/Projects/myapp/target/scala-2.11/myapp.jar
Exception in thread "main" java.lang.NoClassDefFoundError: com/microsoft/sqlserver/jdbc/SQLServerDataSource
当我从java运行时,我得到:
[cloudera@quickstart scala-2.11]$ java -jar myapp.jar
Exception in thread "main" java.lang.NoClassDefFoundError: scala/collection/Seq
at com.my.app.main$.main(main.scala:13)
at com.my.app.main.main(main.scala)
Caused by: java.lang.ClassNotFoundException: scala.collection.Seq
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more
注意JDBC for SQL Server已经放在lib文件夹中,在生成包时,它被sbt自动识别。
非常感谢任何帮助。
谢谢。
编辑:我的问题没有在该帖子上回答
答案 0 :(得分:0)
取自 https://stackoverflow.com/a/52546145/1498109
我会针对您的情况进行修改:
spark-submit --class com.my.app.main \
--master local[0] /home/cloudera/Projects/myapp/target/scala-2.11/myapp.jar \
--jars path_to/sqljdbc42.jar
这对我有用,请从Microsoft的官方网站上下载jdbc jar。