2015-06-06 125 views
2

我有一个使用运行在本地PC上的Maven构建的Java应用程序。我使用Eclipse和Apache/Tomcat作为我的服务器。我在我的应用程序的两个项目:将Maven Java应用程序部署到Tomcat上的OpenShift 7

  1. 的Java代码(JavaApp)
  2. Web应用程序(Web应用程序)

在我的Web应用程序嘭我包括我的JavaApp作为一个依赖。使用Eclipse & Apache/Tomcat可以在本地服务器上正常运行。

我有一个OpenShift账户,并为Tomcat 7(JBoss EWS 2.0)创建了一个应用程序/弹药筒。使用Git我按照说明操作;

  1. 在我的本地Git上创建了OpenShift应用程序的克隆。
  2. 我从本地克隆中删除了SRC目录和pom.xml文件。
  3. 使用Maven我从我的WebApp项目创建了一个WAR文件。我通过查找WAR文件来验证我的JavaApp作为jar文件包含在WEB-INF/lib中。
  4. 我将我的WAR文件复制到克隆的webapps目录中。
  5. 我发布了git add。更新我的新文件。
  6. 我发布了git commit -m“更新的war文件”命令来提交更改
  7. 我发出了git push命令将我的应用程序推送到OpenShift。

我的cmd窗口报告推送是成功的。然后我去我的应用程序的URL,我得到的jsp错误。我的应用程序配置的方式,它先被引导到一个servlet,然后被引导到index.jsp。我附加了一个对象到页面来填充一些字段。错误是说JSP无法找到我的对象的任何方法。此应用程序在我的本地服务器上正常工作。我怀疑由于某种原因,我的WebApp的OpenShift部署找不到我的Java代码(请参阅下文)。

我不知道为什么我得到这个错误,任何帮助将不胜感激!

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 8 in the jsp file: /index.jsp 
The method getLastLocationSearched() is undefined for the type WelcomePageBean 

5: <head> 
6: <%@ page import ="org.williards.core.client.beans.WelcomePageBean" %> 
7: <% WelcomePageBean pageBean = (WelcomePageBean) request.getAttribute("pageBean"); %> 
8: <% if(pageBean.getLastLocationSearched() != null){ %> 
9: <script> 
10:   var lastSearchLocation = <%= pageBean.getLastLocationSearched() %>; 
11:  </script> 

堆栈跟踪:

org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92) 
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) 
    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:451) 
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:356) 
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:334) 
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:321) 
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723) 
    org.williards.core.servlets.WelcomeServlet.pageNavigation(WelcomeServlet.java:26) 
    org.williards.core.servlets.AbstractServlet.doGet(AbstractServlet.java:49) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723) 

回答

0

我的第一个问题是是否你的战争(我指的是战争部署到OpenShift,而不是源)本地工作?我怀疑你的战争并不包含所有的依赖。 要在OpenShift中正常工作,您需要确保OpenShift具有所有的依赖关系。 当作为战争部署中,可以添加第三方罐子到

src/main/webapp/WEB-INF/lib

另一种选择是通过源,它允许你通过指示依赖POM部署。

您可以在以下OpenShift的kb文章中看到所有的细节: https://developers.openshift.com/en/tomcat-dependencies.html

相关问题