7

動的 Web プロジェクトを開発しています。プロジェクトはローカル サーバーでは正常に実行されていますが、ライブ サーバーでは実行されていません。ライブサーバーでは、Java オブジェクトを使用した行で例外がスローされます。

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

4

2 に答える 2

6

CollectionAppServiceJSPにインポートするのを忘れたようです:

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

ただし、大きな問題があります。Java コードを JSP に入れるべきではありません。代わりに、コードをクラスに移動し、サーブレットなどから呼び出す必要があります。

この主な記事:

学ぶことは良いことですが、正しい方法で学ぶことも忘れないでください。


あなたの質問をもう一度読んだ後、次の Stacktrace 行が表示されます。

ファイルが見つかりません: /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 から jar を作成します。
  • プロジェクト A で、プロジェクト B へのすべての参照を削除します。
  • jar をプロジェクト A に追加し、ビルド パスに設定します。
  • プロジェクト A を本番環境にアップロードします。
于 2012-09-19T20:36:18.497 に答える
0

JSPの上にインポート文がないようです

import を使用してユーザー定義クラスをインポートする必要があります

例:

<%@ page import="yourpackage.CollectionAppService" %>
于 2012-09-19T20:32:18.177 に答える