こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

JSPとサーブレットでのJARの使い方

現在,jspやサーブレットにダウンロードしてきたjarの中のクラスを使おうとするとエラーをはいてしまいます。自分的にはエラーの原因はなんかしらの設定かソースがおかしいのではないかと考えております。なので自分がやった設定の手順とソースを説明させていただき、そこでおかしいと思った点を指摘していただきたいと思い投稿させてもらいました。
開発環境はEclipseとTomcatを合したものなのですが、
まずダウンロードしてきたJARをデスクトップに置きました。
次にEclipseでjspのプロジェクトを作成し、
プロジェクトの設定で、外部JARの追加を選択しデスクトップのJARを追加しました。
次にエラーが出るまでのソースを説明させていただくと、
まずJSPの方は

<%@ page language="java" contentType="text/html; charset=windows-31j"
pageEncoding="windows-31j"%>
<%@ page import="java.util.Date" %>
<%@ page import="com.lowagie.text.Document" %>//これがダウンロードしてきたjarのクラス

この様に書いたところEclipseのエディタ上ではエラーは出ないのですが、
デバックすると、

説明
The server encountered an internal error () that prevented it from fulfilling this request.

例外
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません:


というエラーが出てしまいます。なお4行目をコメントアウトすると正常に動作します。
次にサーブレットの方は

import java.io.*;
import com.lowagie.text.Document;//こっちはこのimport文ではエラーが出ない
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class selfreport_Pdf extends javax.servlet.http.HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Document doc = new Document();//ここでエラーがでる

こちらもEclipseのエディタ上ではエラーは出ないのですが、デバックして
jspからサーブレットにsubmit(?)をすると

説明 The server encountered an internal error () that prevented it from fulfilling this request.

例外
javax.servlet.ServletException: サーブレットの実行により例外を投げました


原因
java.lang.NoClassDefFoundError: com/lowagie/text/Document
selfinfo.selfreport_Pdf.doGet(selfreport_Pdf.java:29)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

この様なエラーが出ます。なおこちらはDcoment doc = enw Docment()
の処をコメントアウトすると、正常に動作します。またこのプログラムを
最も基本的なjavaアプリケーションに落とし込んで実行すると、正常に動作します。

また自分はjsp初心者なので、何か書き損じている点があるかもしれません。
もしそのような点があった場合はお手数ですが書いていただけると、後で補足させていただきます。
お返事おまちしております。

投稿日時 - 2009-08-17 16:30:45

QNo.5214452

困ってます

質問者が選んだベストアンサー

使用しているプロジェクトの
WEB-INF/lib
に追加したいjarファイルを入れてみてはどうでしょう?

外部JARの追加はあくまでもEclipse上での実行環境の設定です。(ですのでjavaアプリケーションでは動作する)
質問者さんの環境はWebアプリケーションなのでTomcatの利用するライブラリとして設定する必要があります。

投稿日時 - 2009-08-17 16:42:38

補足

お返事ありがとうございます。

<<使用しているプロジェクトの・・・
少し追加する場所で悩んでしまいました。これはEclipseのworkspacseに作ったプロジェクトのWEB-INF/libでいいんですよね?
またlibの中にJARファイルをコピーしたのですが、同じエラーが出てしまいました。
また、お返事おまちしております。

投稿日時 - 2009-08-18 00:34:29

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

うーん、Tomcat開発用クラスローダのクラスパスで設定ではどうでしょ?

Tomcatのバージョンによって設定が変わるのでバージョンとか教えてもらうと識者からレスがつくかもしれません。

投稿日時 - 2009-08-18 11:23:21

補足

自分のTOMCATは6.0でした。
自分でもクラスローダを調べてみましたが、なかなか難しいですね。
何度もお返事ありがとうございます。

投稿日時 - 2009-08-19 10:06:21

あなたにオススメの質問