2012-09-19 67 views
4

我正在開發動態Web項目。項目在本地服務器上運行良好,但不在現場。在現場服務器,它拋出,在我使用任何Java對象行例外:無法編譯JSP類:無法解析爲類型

org.apache.jasper.JasperException:無法編譯類JSP:

An error occurred at line: 7 in the jsp file: /groups.jsp 
CollectionAppService cannot be resolved to a type 
4: <% 
5: String json = "[]"; 
6: try { 
7:  CollectionAppService collectionAppService = new CollectionAppService(); 
8:  json = collectionAppService.getGroupsJson(); 
9: } catch (Exception e) { 
10:   e.printStackTrace(); 

項目運行的本地服務器上,但也有在錯誤日誌中的錯誤爲最大類文件:

錯誤:

Thu Sep 20 01:16:11 GMT+05:30 2012 
File not found: /Users/sukhpal/Data/Workspaces/J2EE Workspace/CollectionApp/build/classes/com/mut/service/common/Constants.class. 

請幫忙(Tomcat的是我活服務器上啓用)。

以下是直播服務器的鏈接 http://mutmanager.com/webservice/groups.jsp

回答

0

看來你是對的JSP

你需要使用進口

實例導入用戶定義的類頂部缺少import語句:

<%@ page import="yourpackage.CollectionAppService" %> 
5

看起來你忘了在JSP中導入你的CollectionAppService

<%@ page import="your.package.CollectionAppService" %> 

但是,有一個重大的問題,你不應該把Java代碼在JSP。相反,你應該將你的代碼移動到一個類中,並從Servlet或類似的地方調用它。

這主要文章:

不要忘了,學習好,而且能學到正確的方式。


再次讀取你的問題後,我看到這個堆棧跟蹤行:

File not found: /Users/sukhpal/Data/Workspaces/J2EE Workspace/CollectionApp/build/classes/com/mut/service/common/Constants.class

我想,你的問題是Constant類(和你的CollectionApp也一樣)是一個項目B.你在裏面使用來自另一個包含這些類的項目的絕對路徑引用,也許你不會上傳它。想象一下這種情況:你有一個Web項目(項目A),並且你有一些類已經在另一個項目(項目B)中做了一個沉重而又奇特的工作,你可以在你工作的大多數項目上重複使用它。在您的開發環境中,您有從項目A到項目B的參考,但是您只能將項目A上傳到生產環境。這樣,當項目A想要從項目B調用一個類時,它永遠不會找到它,並拋出異常。

最好的解決辦法:

  • 創建從項目B.罐子
  • 在項目A中,刪除對項目B的所有引用。
  • 將該jar添加到項目A中並將其設置在構建路徑中。
  • 將您的項目A上傳到生產。
+0

謝謝你的回覆。但是我已經導入了類文件。另外我上面提到它可以在本地tomcat服務器上正常工作,但問題在於實時tomcat服務器上。我已經購買了tomcat和java的shard託管。 –

+0

如果該類是導入的,那麼問題在於您部署了應用程序但錯過了該類。確保所有已編譯的類位於WEB-INF/classes文件夾中(在該文件夾中,您將包看作是文件夾)。 –

+0

謝謝。類存在。這個問題適用於所有使用java類的行上的jsp頁面。所有的servlet工作正常。 Jsp文件無法加載任何Java類。 –