2017-03-07 336 views
2

我想为Heroku平台配置Procfile文件以在本地运行应用程序。我正在尝试运行基于Tomcat的Java Web应用程序。

在本教程中,他们说:

To build your app locally do this: 
Use the Git Bash application to open a command shell on Windows. 
$ mvn clean install 
$ heroku local web 

我在项目目录和mvn clean install后,我收到

BUILD SUCCESS

问题是,当我运行:heroku local web 我收到[WARN] No ENV file found web.1 | Error: Could not find or load main class $JAVA_OPTS

我Procfile具有1行:

网:java的$ JAVA_OPTS罐子目标/依赖/ webapp的-runner.jar --port $ PORT目标/ *战争

我使用Windows。我在堆栈上看到一个post,他们说在Procfile中Windows上的代码是不同的。它应该是这个样子(我的创作):

网站:JAVA%JAVA_OPTS%的罐子目标\依赖性\ web应用程序,runner.jar --port%PORT%的目标*的.war

我必须在目标文件夹中创建一个名为“依赖”的文件夹?因为我的项目中没有webbapp-runner.jar,我不明白我该怎么做。

这里是我的pom.xml

<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.rares</groupId> 
<artifactId>first-web-application</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>war</packaging> 

<dependencies> 
    <dependency> 
     <groupId>com.github.jsimone</groupId> 
     <artifactId>webapp-runner</artifactId> 
     <version>8.5.11.2</version> 
    </dependency> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-web-api</artifactId> 
     <version>6.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.3.6.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.17</version> 
    </dependency> 
</dependencies> 

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.2</version> 
       <configuration> 
        <verbose>true</verbose> 
        <source>1.8</source> 
        <target>1.8</target> 
        <showWarnings>true</showWarnings> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.tomcat.maven</groupId> 
       <artifactId>tomcat7-maven-plugin</artifactId> 
       <version>2.2</version> 
       <configuration> 
        <path>/</path> 
        <contextReloadable>true</contextReloadable> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

我要补充webapp的亚军作为一个插件?

+0

你尝试从同一职位的其他解决方案你分享?像'web:java%JAVA_OPTS%-cp target \ classes;“target \ dependency \ *”Main'。您可以按照[这](https://devcenter.heroku.com/articles/deploying-java#the-procfile) – nullpointer

+0

它是什么,我的主类?我刚LoginController中的Java类和登录服务..A类我控制器的方法 – ProgIsMetal

+0

@ProhIsMetal服务类应该是一个。理想情况下,您想从中启动应用程序的类。 – nullpointer

回答

1

您需要的webapp亚军添加到您的pom.xml这样的:

 <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.5.11.2</version> 
          <destFileName>webapp-runner.jar</destFileName> 
         </artifactItem> 
        </artifactItems> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 

然后你Procfile可以是这样的:

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

而且你Procfile.windows可以看看(东西)是这样的:请参阅Deploying Tomcat-based Java Web Applications with Webapp Runner

+0

请使用[插件UPTODATE版本(https://maven.apache.org/plugins/maven-dependency-plugin/)和不那么古老的版本... – khmarbaise

+0

我必须定义什么地方$ JAVA_OPTS? – ProgIsMetal

+0

当我运行:mvn包 我收到构建成功,并在java -jar目标/依赖项/ webapp-runner.jar目标/ *。war我收到:错误无法访问jarfile目标/依赖项/ webapp-runner.jar – ProgIsMetal

1

因此,我读了很多关于此错误+在Heroku上的教程的stackoverflow上的帖子,并没有找到解决方案,但我做了一个改进。我读this post并删除了开始<pluginManagement>和结束<pluginManagement/>标记pom.xml和现在dependency目录和webapp-runner-8.0.30.1.jar创建。 我的应用程序正在工作,因为如果我用Tomcat在Eclipse中运行我的应用程序,我可以到localhost:8080/login并且我可以看到我的网站。 当我运行:

MVN包

我接收build succes之后,我在CMD运行

Java的罐子目标/依赖性/ web应用-runner.jar目标/ * .war

我收到:error invalid or corrupt jarfile target/dependency/webapp-runner.jar

这里是我的Procfile:

网:java的$ JAVA_OPTS罐子目标/依赖/ webapp的-runner.jar --port $ PORT目标/ *战争

这里是我的Procfile.windows:

网站:JAVA%JAVA_OPTS%的罐子目标\依赖性\ web应用程序,runner.jar --port%PORT%的目标*的.war

我的pom.xml:

<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.rares</groupId> 
<artifactId>first-web-application</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>war</packaging> 

<dependencies> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-web-api</artifactId> 
     <version>6.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.3.6.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.17</version> 
    </dependency> 
</dependencies> 

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.2</version> 
       <configuration> 
        <verbose>true</verbose> 
        <source>1.8</source> 
        <target>1.8</target> 
        <showWarnings>true</showWarnings> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.tomcat.maven</groupId> 
       <artifactId>tomcat7-maven-plugin</artifactId> 
       <version>2.2</version> 
       <configuration> 
        <path>/</path> 
        <contextReloadable>true</contextReloadable> 
       </configuration> 
      </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.5.11.2</version> 
            <destFileName>webapp-runner.jar</destFileName> 
           </artifactItem> 
          </artifactItems> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
</build> 

相关问题