2016-04-24 28 views
0

WindowsプラットフォームでEclipseを使用して、この単純な "Hello World" Webアプリケーション(mavenを使用して設定)をSetting up Spark with Mavenに試しました。それがEclipseから実行されている場合は、完全に動作します。シンプルなJava Spark Webアプリケーションのデプロイ

しかし、私が達成したいのは、クラウドにあるCentOS 6.xで動作させることです。これは、パテを使ってssh経由でアクセスします。私は既にCentOSにJDK 8とmavenをインストールしています。私はSparkアプリケーションを(Jettyである)組み込みASで動作させたいので、アプリケーションサーバはインストールされていません(Tomcatなどはありません)。

Eclipse/Maven/WindowsからこのようなSparkアプリケーションをクラウドのCentOSサーバーに導入する方法はまだ見つかりませんでした。私はherakuに展開する方法を説明するチュートリアルや、別のAS(組み込みのものを使用しない)に展開する方法についても説明しましたが、説明したように簡単なものは何もありません。

Eclipseで、プロジェクトをjarとしてエクスポートし、jarをCentOSサーバーにアップロードし、 'java -jar appname.jar'を実行しても動作しない場合は、Sparkライブラリも埋め込まれた桟橋。

助けが必要ですか?ありがとう。

+0

サーバー上で 'java -jar appname.jar'を実行した結果の出力は何ですか? – Casey

+0

スレッドで 'の例外 "メイン" java.lang.BootstrapMethodError:java.lang.NoClassDefFoundErrorが:java.lang.NoClassDefFoundErrorが:によって引き起こさchatapp.Main.main(Main.java:8) で火花/要求 火花/リクエスト ... 1もっと によって引き起こさ:java.lang.ClassNotFoundExceptionが:java.lang.ClassLoader.loadClassでjava.net.URLClassLoader.findClassでspark.Request (URLClassLoader.java:381) (ClassLoader.java:424 ) at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 1 more' –

+0

このように、私が言ったように、Sparkライブラリを含んでいます。 –

答えて

2

mavenに関するビデオチュートリアルを見て、私は解決策を見つけました。 まず、あなたはEclipseでMavenプロジェクトでxml.pomファイルに以下を追加する必要があります。どこのメインクラスを見つけるためにMavenを伝えることが重要である

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <descriptorRefs> 
        <!-- This tells Maven to include all dependencies --> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
       <archive> 
        <manifest> 
         <mainClass>chatapp.Main</mainClass> 
        </manifest> 
       </archive> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

。私のケースでは、私はチャットアプリにこの単純な「Hello World」アプリを進化させようとしているので、私は自分のアプリの名前を「Chatapp」と命名し、mainメソッドを含むMainクラスはMainという名前でパッケージchatappの下にあり、それはチャタップです。主。これらの行は、<dependencies>ノードの直後に追加できます。したがって、POMファイルは次のようになります。今

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.orboan</groupId> 
<artifactId>chatapp</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>jar</packaging> 
<name>new-spark-project</name> 
<dependencies> 
    <dependency> 
     <groupId>com.sparkjava</groupId> 
     <artifactId>spark-core</artifactId> 
     <version>2.3</version> 
    </dependency> 
</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <descriptorRefs> 
        <!-- This tells Maven to include all dependencies --> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
       <archive> 
        <manifest> 
         <mainClass>chatapp.Main</mainClass> 
        </manifest> 
       </archive> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

、重要なことは、パッケージエクスプローラで、コンテキストメニューからプロジェクトのEclipseでのエクスポート・ユーティリティ(右クリックを使用しないでありません展開のためにJavaプロジェクトをjarファイルにエクスポートするときに通常行うように、[エクスポート]を選択します)。これによりjarファイルが生成されますが、すべての依存関係は必要ありません。

代わりに(コンテキストメニューから)[実行]> [Mavenインストール]を選択する必要があります。これにより、(pom.xmlから)対応するjarファイルが生成され、必要なすべての依存関係が含まれます(私の場合はchatapp-0.0.1-SNAPSHOT-jar-with-dependencies.jar)。

次に、そのjarファイルをCentOSサーバーにアップロードし、java -jar
chatapp-0.0.1-SNAPSHOT-jar-with-dependencies.jar
で実行します。今はうまくいくはずです。

関連する問題