2016-05-04 16 views
0

私はanglejsで書かれた単一ページのWebアプリケーションをjetty上でspark javaで実行しようとしています。このプロジェクトはMavenプロジェクトとしてeclipse keplerで書かれています。 私がURL http://localhost:8085/に入ったときに受け取ったエラーは次のようなもので、他のURLやポイントに直接アクセスしてもindex.html/jspに直接アクセスしようとしても同じエラーが発生します。/SparkjavaとJettyが返す404

HTTPエラー404 /にアクセスできません。理由: が見つかりませんでした 突堤によって供給:// Eclipseのコンソールは、サーバーが稼働していることを示すと、ローカルホスト上でリスニング

==火花が点火している... を実行している

:8085 [スレッド2]情報org.eclipse.jetty.server.Server - jetty-9.0.2.v20130417 [Thread-2] INFO org.eclipse.jetty.server.ServerConnector - 開始 [email protected]{HTTP/1.1}{localhost: 8085}

パックを追加時代の探検家が助けるかもしれない場合に。

enter image description here

移動がちょうどそれらを追加するために私が知っていると病気に編集必要とされている場合、私は、ファイルのコードの一部を追加します。

のpom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<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>todoapp</groupId> 
    <artifactId>todoapp1</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <properties> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <maven.compiler.target>1.8</maven.compiler.target> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>com.sparkjava</groupId> 
      <artifactId>spark-core</artifactId> 
      <version>2.0.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-simple</artifactId> 
      <version>1.7.5</version> 
     </dependency> 
     <dependency> 
      <groupId>org.mongodb</groupId> 
      <artifactId>mongo-java-driver</artifactId> 
      <version>2.11.3</version> 
     </dependency> 
     <dependency> 
      <groupId>com.google.code.gson</groupId> 
      <artifactId>gson</artifactId> 
      <version>2.2.4</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.eclipse.jetty</groupId> 
       <artifactId>jetty-maven-plugin</artifactId> 
       <version>9.0.2.v20130417</version> 
       <configuration> 
        <webApp> 
         <contextPath>/public</contextPath> 
        </webApp> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-shade-plugin</artifactId> 
       <version>2.3</version> 
       <configuration> 
        <createDependencyReducedPom>true</createDependencyReducedPom> 
        <filters> 
         <filter> 
          <artifact>*:*</artifact> 
          <excludes> 
           <exclude>META-INF/*.SF</exclude> 
           <exclude>META-INF/*.DSA</exclude> 
           <exclude>META-INF/*.RSA</exclude> 
          </excludes> 
         </filter> 
        </filters> 
       </configuration> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>shade</goal> 
         </goals> 
         <configuration> 
          <transformers> 
           <transformer 
             implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
            <mainClass>com.todoapp.Bootstrap</mainClass> 
           </transformer> 
          </transformers> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 


</project> 

Bootstrap.java

package com.todoapp; 

import com.mongodb.*; 

import static spark.Spark.setIpAddress; 
import static spark.Spark.setPort; 
import static spark.SparkBase.staticFileLocation; 

public class Bootstrap { 
    private static final String IP_ADDRESS = System.getenv("OPENSHIFT_DIY_IP") != null ? System.getenv("OPENSHIFT_DIY_IP") : "localhost"; 
    private static final int PORT = System.getenv("OPENSHIFT_DIY_IP") != null ? Integer.parseInt(System.getenv("OPENSHIFT_DIY_IP")) : 8085; 

    public static void main(String[] args) throws Exception { 
     setIpAddress(IP_ADDRESS); 
     setPort(PORT); 
     staticFileLocation("/public"); 
     new TodoResource(new TodoService(mongo())); 
    } 

    private static DB mongo() throws Exception { 
     String host = System.getenv("OPENSHIFT_MONGODB_DB_HOST"); 
     if (host == null) { 
      MongoClient mongoClient = new MongoClient("localhost"); 
      return mongoClient.getDB("todoapp"); 
     } 
     int port = Integer.parseInt(System.getenv("OPENSHIFT_MONGODB_DB_PORT")); 
     String dbname = System.getenv("OPENSHIFT_APP_NAME"); 
     String username = System.getenv("OPENSHIFT_MONGODB_DB_USERNAME"); 
     String password = System.getenv("OPENSHIFT_MONGODB_DB_PASSWORD"); 
     MongoClientOptions mongoClientOptions = MongoClientOptions.builder().connectionsPerHost(20).build(); 
     MongoClient mongoClient = new MongoClient(new ServerAddress(host, port), mongoClientOptions); 
     mongoClient.setWriteConcern(WriteConcern.SAFE); 
     DB db = mongoClient.getDB(dbname); 
     if (db.authenticate(username, password.toCharArray())) { 
      return db; 
     } else { 
      throw new RuntimeException("Not able to authenticate with MongoDB"); 
     } 
    } 
} 

この2つのファイルは、今私はオーバーのためのインターネットを研究してきた、桟橋サーバーの責任のものですこのエラーの解決策と理由を見つけようとしていましたが、何も私を助けませんでした。

答えて

1

あなたのプロジェクトのクラスパスから、あなたのhtmlファイルがある/publicディレクトリにアクセスできることを確認してください。これをテストするには、staticFiles.externalLocation(これはバージョン2.5の場合はexternalStaticFileLocationを使用してください)のフルパスを/publicに設定してみてください。それがうまくいけば、おそらく/publicディレクトリをJavaパッケージと同じ場所に移動し、期待通りにstaticFileLocation("/public")と動作します。