Ich habe ein Scala-Programm und ich verwende die Intellij IDE. Ich habe ein Glas dieses Programms erstellt und auf den Linux-Server gestellt. Ich habe auch ein Shell-Skript erstellt, um das Programm auszuführen. Jedes Mal, wenn ich das Shell-Skript ausführen, bekomme ich diesen Fehler:Erstellen eines Jar unter Linux Server
java.lang.ClassNotFoundException: com.tac.cco.associations.HDFStoES.main at java.net.URLClassLoader$1.run(URLClassLoader.java:359) at java.net.URLClassLoader$1.run(URLClassLoader.java:348) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:347) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:278) at org.apache.spark.util.Utils$.classForName(Utils.scala:229) at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:695) at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187) at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Hier ist auch mein Shell-Skript
loader.sh
#!/bin/bash
input_path=/user/content/dashboard/t_date=
#output_path=/user/content/t_orc_content
lib=/apps/cco/lib
midt_date=20170626
jar_file=/apps/cco/ReportingData/bin/ReportingData.jar
input=$input_path$t_date
args="--jars $lib/elasticsearch-spark-20_2.11-5.2.1.jar,$lib/elasticsearch-5.2.1.jar,$lib/kafka-clients-0.9.0.2.3.4.51-1.jar,$lib/config-1.3.1.jar,$lib/DistributedLogger-0.0.2.jar,$lib/argparse4j-0.7.0.jar,$lib/spark-sql_2.11-2.1.0.jar,$lib/spark-core_2.11-2.1.0.jar"
opt="--driver-memory 30g --executor-memory 20g --executor-cores 10 --num-executors 6 --master yarn --conf spark.hadoop.yarn.timeline-service.enabled=false"
/usr/local/spark/bin/spark-submit $opt $args --class com.tac.cco.associations.HDFStoES.main $jar_file $t_date
exit
Die Hauptdatei ist das Programm in src/main/scala/com/tac/cco/assoziationen/HDFStoES/main.scala aber es scheint, als ob es es nicht erkennt. Die Manifest-Datei ist unter src/main/META-INF/MANIFEST.MF und enthält folgende Komponenten:
Manifest-Version: 1.0
Main-Class: com.tac.cco.associations.HDFStoES.main
Ich verstehe nicht, warum diese Fehlermeldung auftauchen, anstatt das Programm läuft.
Um das Glas zu erstellen, habe ich folgendes gemacht: Ich ging in Projektstruktur -> artificats -> jar -> aus Modulen mit Abhängigkeiten -> Ich wählte dann das ReportingData (Name meines Projekts) Moduls. Habe die com.tac.coc.associations.HDFStoES.main als meine Hauptklasse ausgewählt und dann das Verzeichnis für das Mainfest ausgewählt. Ich habe dann alle Abhängigkeiten außer dem Manifest-Ordner entfernt. Ich habe es dann erstellt, Artefakte gebaut, es zuerst gereinigt und dann gebaut.
, wie Sie die JAR-Datei erstellt haben? – lev
@lev ging ich in die Projektstruktur -> artificats -> jar -> aus Modulen mit Abhängigkeiten -> Ich wählte dann das ReportingData (Name meines Projekts) Moduls. Habe die com.tac.coc.associations.HDFStoES.main als meine Hauptklasse ausgewählt und dann das Verzeichnis für das Mainfest ausgewählt. Ich habe dann alle Abhängigkeiten außer dem Manifest-Ordner entfernt. Ich habe es dann erstellt, Artefakte gebaut, es zuerst gereinigt und dann gebaut. – user2896120
Die Klasse, die Ihre 'main'-Methode enthält, heißt wörtlich" main "? Das sagst du basierend auf dem Manifest, das du geteilt hast. –