2017-10-07 22 views
-1

私はHerokuで自分のアプリケーションを展開することに問題があった後、可能な限り最も単純なアプリケーションを作成しました:index.jspSomeServlet.javaの2つのファイルがあります。 index.jspのHeroku:最も単純なアプリケーションで、メインクラスが見つからないかロードされませんでした

TestDeployApp 
    --WEB-INF 
    --classes 
     --com 
     --web 
      --SomeServlet.class 
    --web.xml 

    --src 
    --com 
     --web 
     --SomeServlet.java 

    --target 
    --classes 
     --com 
     --web 
      --SomeServlet.class 
    --dependency 
     --webapp-runner.jar 
    --maven-archiver 
     --pom.properties 
    --gs-serving-web-content-0.1.0.jar 
    --gs-serving-web-content-0.1.0.jar.original 

    --index.jsp 
    --pom.xml 
    --Procfile 
    --TestDeployApp.war 

<html> 
    <head></head> 
    <body>it's a jsp</body> 
</html> 

SomeServlet.java

package com.web; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import java.io.*; 


public class SomeServlet extends HttpServlet { 
      public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 
        PrintWriter out = response.getWriter(); 
      java.util.Date today = new java.util.Date(); 
        out.println("<html><body><h1>" + today + "</h1></body></html"); 

      } 
} 

私は、次のプロジェクト構造を持っていますweb.xmlの

<?xml version="1.0" encoding="UTF-8" ?> 

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
     version="2.4"> 

    <display-name>TestDeployApp</display-name> 
    <description> 
     This is a simple web application with a source code organization 
     based on the recommendations of the Application Developer's Guide. 
    </description> 

    <context-param> 
      <param-name>adminPlanet</param-name> 
      <param-value>Earth</param-value> 
    </context-param> 

    <servlet> 
     <servlet-name>SomeServlet</servlet-name> 
     <servlet-class>com.web.SomeServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>SomeServlet</servlet-name> 
     <url-pattern>/SomeServlet.do</url-pattern> 
    </servlet-mapping> 

</web-app> 

の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>org.springframework</groupId> 
    <artifactId>gs-serving-web-content</artifactId> 
    <version>0.1.0</version> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.2.RELEASE</version> 
    </parent> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-thymeleaf</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-devtools</artifactId> 
      <optional>true</optional> 
     </dependency> 


    </dependencies> 

    <properties> 
     <java.version>1.7</java.version> 
     <start-class>com.web.SomeServlet</start-class> 
    </properties> 



    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <version>2.3</version> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals><goal>copy</goal></goals> 
         <configuration> 

          <artifactItems> 

           <artifactItem> 
             <groupId>com.github.jsimone</groupId> 
             <artifactId>webapp-runner</artifactId> 
             <version>8.0.30.2</version> 
             <destFileName>webapp-runner.jar</destFileName> 
           </artifactItem> 

          </artifactItems> 

         </configuration> 
        </execution> 
       </executions> 
     </plugin> 


     </plugins> 

     <defaultGoal>install</defaultGoal> 
    </build> 

</project> 

Procfile

web: java $JAVA_OPTS -cp target/classes/:target/dependency/* com.web.SomeServlet 

それをすべてを展開する私は何をやっている:

git init 
git add 
git commit -m "first" 
git push heroku master 
heroku open 

ブラウザウィンドウが開いた後、An error occurred in the application and your page could not be served. If you are the application owner, check your logs for details.エラーが表示されます。ログに

2018-02-10T20:16:50.864803+00:00 app[web.1]: Error: Could not find or load main class com.web.SomeServlet 
2018-02-10T20:16:56.052981+00:00 heroku[web.1]: Starting process with command `java $JAVA_OPTS -cp target/classes/:target/dependency/* com.web.SomeServlet` 
2018-02-10T20:16:58.391978+00:00 heroku[web.1]: Process exited with status 1 
2018-02-10T20:16:58.419611+00:00 heroku[web.1]: State changed from starting to crashed 
2018-02-10T20:16:58.099331+00:00 app[web.1]: Setting JAVA_TOOL_OPTIONS defaults based on dyno size. Custom settings will override them. 
2018-02-10T20:16:58.103410+00:00 app[web.1]: Picked up JAVA_TOOL_OPTIONS: -Xmx300m -Xss512k -Dfile.encoding=UTF-8 
2018-02-10T20:16:58.297295+00:00 app[web.1]: Error: Could not find or load main class com.web.SomeServlet 
2018-02-10T20:17:41.405484+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=testdeployapp-mine.herokuapp.com request_id=c217c572-e92a-409d-b8c8-27e57bb20013 fwd="178.217.106.173" dyno= connect= service= status=503 bytes= protocol=https 
2018-02-10T20:17:42.829328+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=testdeployapp-mine.herokuapp.com request_id=21b0276c-ef8c-41b0-92c1-86c15d727aad fwd="178.217.106.173" dyno= connect= service= status=503 bytes= protocol=https 
2018-02-10T20:17:58.784267+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=testdeployapp-mine.herokuapp.com request_id=a303e9da-e9d5-4d15-bd78-d3de2b3b3240 fwd="178.217.106.173" dyno= connect= service= status=503 bytes= protocol=https 
2018-02-10T20:18:12.634882+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=testdeployapp-mine.herokuapp.com request_id=ce575c1b-d1ab-4f83-aaf7-a95cab4c7752 fwd="178.217.106.173" dyno= connect= service= status=503 bytes= protocol=https 

また、私はその後、java -jar webapp-runner.jar application.warコマンドを使用しようとしましたが、私はCMDでUnable to access jarfile webapp-runner.jarエラーが発生します。

ご提案は大歓迎です。私はすべてのバリエーションを試したProcfile私は、何も動作するように見えることがあります。

+1

ブラウザキャッシュ? –

+1

シークレットタブで試してください –

+0

一部のブラウザでは、開発者用ツールを開いているときに[キャッシュを無効にする]オプションを使用できます –

答えて

2

基本的にwarまたは「Webアプリケーション」デプロイメントとjarまたは「実行可能」デプロイメントを混在させています。まず、Tomcatのようなサーブレットコンテナと.war形式のパッケージにデプロイできるWebアプリケーションが必要です。このタイプの展開では、target/dependency/webapp-runner.jarProcfileを入力してアプリケーションを実行する必要があります。その背後にあるアイデアは、Herokuにサーブレットコンテナを実行し、.warファイルをデプロイするよう依頼することです。 は、だから、

web: java $JAVA_OPTS -jar target/dependency/webapp-runner.jar --port $PORT target/*.war

にごProcfileを変更する必要がありますが、私はあなたが埋め込まれたサーブレットコンテナとjarパッケージ実行可能ファイルを作成し、春のブートパッケージを、使用している見るように。しかし、春の起動アプリケーションを起動する主要なクラスはありません。

@SpringBootApplication 
public class Application { 
    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 
をそして web: java -jar target/your-app-name.jar

にごProcfileを変更するので、通常のWebアプリケーションに春ブーツからアプリケーションの種類を変更し、Herokuのウェブを使用するか:だからあなたの場合と同じように春ブーツメインクラスを追加またはSpring Bootスターターメインクラスを追加してください。

0

Javaクラスパスが正しくないようですか?

のjavaの$ JAVA_OPTS -cp対象/クラス/ :あなたがアプリにアクセスしようとしている間、ターゲット/依存/ * com.web.SomeServlet

0

はあなたのポート番号が正しいですか?デフォルトポートを一度確認してください。あなたが気付いていないlocalhost:8080またはその他の可能性があります。

関連する問題