2017-11-12 7 views
0

私はScalaプログラムを持っており、私はIntellij IDEを使っています。私はこのプログラムのjarファイルを作成し、それをLinuxサーバーに入れました。私はまた、プログラムを実行するシェルスクリプトを作った。私はシェルスクリプトを実行するたびに、私はこのエラーを取得する:ここにも私のシェルスクリプトですLinuxサーバ上で動作するjarファイルの構築

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)

#!/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 

loader.shは、プログラムのメインファイルは、/ srcに/メインでありますscala/com/tac/cco/associations/HDFStoES/main.scalaがそれを認識していないようです。マニフェストファイルは、SRC /メイン/ META-INF/MANIFEST.MFの下で、次のものが含まれます。このエラーメッセージは、プログラムの実行ではなく、ポップアップされている理由

Manifest-Version: 1.0 
Main-Class: com.tac.cco.associations.HDFStoES.main 

が、私は理解していません。

私は次のようにしました: プロジェクト構造 - > artificats - > jar - >依存関係のあるモジュールから>私はReportingData(プロジェクトの名前)モジュールを選択しました。私のメインクラスとしてcom.tac.cco.associations.HDFStoES.mainを選択し、mainfestのディレクトリを選択しました。その後、マニフェストフォルダ以外のすべての依存関係を削除しました。私はそれを作成し、アーティファクトを作り、それを最初に清掃してからそれを作りました。

+0

をこの次のプラグインを追加しますか? – lev

+0

@levプロジェクト構造 - > artificats - > jar - >依存関係のあるモジュールから - >私はReportingData(プロジェクト名)モジュールを選択しました。私のメインクラスとしてcom.tac.cco.associations.HDFStoES.mainを選択し、mainfestのディレクトリを選択しました。その後、マニフェストフォルダ以外のすべての依存関係を削除しました。私はそれを作成し、アーティファクトを作り、それを最初に清掃してからそれを作りました。 – user2896120

+0

'main'メソッドを含むクラスは、文字通り「main」と呼ばれていますか?それはあなたが共有したマニフェストに基づいてあなたが言っていることです。 –

答えて

1

はどのようにjarファイルを作成しなかったあなたのpom.xmlに

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-shade-plugin</artifactId> 
<version>2.4.3</version> 
<executions> 
    <execution> 
    <phase>package</phase> 
    <goals> 
     <goal>shade</goal> 
    </goals> 
    <configuration> 
     <transformers> 
     <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
      <mainClass>com.tac.cco.associations.HDFStoES.main</mainClass> 
     </transformer> 
     </transformers> 
    </configuration> 
    </execution> 
</executions> 
</plugin> 
+0

このファイルはどこに置く必要がありますか?メインディレクトリには? – user2896120

+0

これは新しいmavenプロジェクトを作成します。その後、srcフォルダにpom.xmlというファイルが作成されます。既存のコードをコピーして貼り付けると、問題が解決されます。 mavenプロジェクトの作成方法 - http://www.mkyong.com/maven/how-to-create-a-java-project-with-maven/ – Abhimanyu

関連する問題