※ ChatGPTを利用し、要約された質問です(原文:servletに自作パッケージを読ませるには)
servletに自作パッケージを読ませるには
このQ&Aのポイント
servletに自作パッケージを読み込む方法を教えてください。
自作パッケージをservletに読み込む際にエラーが発生しています。エラーメッセージは「The requested resource () is not available.」です。
自作パッケージの配置やインポート方法に問題があるかどうか確認する方法を教えてください。
以下のようなソースがあり
実行するとエラーになります。
rssoriginal.java
--------------------------------------
package to.msn.wings.chap4;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.fetcher.FeedFetcher;
import com.sun.syndication.fetcher.impl.HttpURLFeedFetcher;
class Rssdata{//データ格納用クラス
String[] title = new String[20];
String[] link = new String[20];
String[] day = new String[20];
}
public class RssOriginal extends HttpServlet {
private static final String URL= "http://dtm-web-etc.seesaa.net/index20.rdf";
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
FeedFetcher ff = new HttpURLFeedFetcher();
SyndFeed feed=null;
int i = 0;//for文用変数
Rssdata rssdata = new Rssdata();//rssデータ格納用クラス
try {
feed = ff.retrieveFeed(new URL(URL));
} catch (Exception e) {
throw new ServletException(e);
}
Calendar cal = new GregorianCalendar();
for(SyndEntry entry : (List<SyndEntry>)feed.getEntries()){
entry.getPublishedDate();
rssdata.day[i] = cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.DAY_OF_MONTH);
rssdata.link[i] = entry.getLink();
rssdata.title[i] = entry.getTitle();
System.out.println(rssdata.day[i]);
System.out.println(rssdata.link[i]);
System.out.println(rssdata.title[i]);
System.out.println();
i++; }
request.setAttribute("feed", rssdata);
this.getServletContext().getRequestDispatcher("/chap4/rss/index.jsp").forward(request,response);
}
}
--------------------------------------
エラーメッセージ
--------------------------------------
説明 The requested resource () is not available.
--------------------------------------
↓この部分がおかしいのかと思いパッケージ化し
アプリケーションルート\\WEB-INF\libに配置しました。
Rssdata.class
--------------------------------------
package rssdata;
//↓この部分
class Rssdata{//データ格納用クラス
String[] title = new String[20];
String[] link = new String[20];
String[] day = new String[20];
}
--------------------------------------
そしてrssoriginal.javaにて
--------------------------------------
import Rssdata.*;
--------------------------------------
とすると見事にRssdata関連の
パッケージ・シンボルは見つけられませんと出ます。
(コンパイル時)
サーブレットで上記のようなことをするには
どうしたらよいでしょうか?
ご教授頂ければ幸いです。
お礼
早速のご回答ありがとうございます! >package rssdataなわけだから、classes内にrssdataを用意し、その中に入れる形になる。 初歩的なミスですみません。 rssoriginal.classと同じ階層にrssdata(ディレクトリ)を 作成しRssdata.classを配置し import to.msn.wings.chap4.rssdata.Rssdata.*; import to.msn.wings.chap4.rssdata.Rssdata; と2パターン試してみましたが変わらず パッケージは見つかりません と出てしまいます。 この場合web.xmlへの登録は必要になるのでしょうか? またjarファイルとしてWEB-INF\libに配置してみましたが これもだめでした。 こちらはimport Rssdata.*;として試しました。 お心当たりありましたら またアドバイスをお願い致します。
補足
おかげさまで一応両方のファイルの コンパイルまではできました! ありがとうございました! しかしまた新たな問題が出ましたので 調べてわからなかった場合 また改めて質問させて頂きます。