2015-06-06 209 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

相關問題