K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[2234] Re:eclipseでHenacatを作成したい
投稿者:(ぱ)こと管理人
2020/08/15 22:50:18

はじめまして。ご質問ありがとうございます。 >Mainを実行して、URL(http://localhost:8001/makeTcpServer/ShowBBS)をたたくと、 > >java.lang.ClassNotFoundException: ShowBBS > at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471) > at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588) > at java.base/java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:899) > at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) > at com.kokun.henacat.servletimpl.ServletService.createServlet(ServletService.java:17) > at com.kokun.henacat.servletimpl.ServletService.doService(ServletService.java:56) > at com.kokun.henacat.webserver.ServerThread.run(ServerThread.java:90) > at java.base/java.lang.Thread.run(Thread.java:834) このスタックトレースから分かることは、Hanecatから掲示板のクラス(ShowBBS)を 読み込もうとしてそれが見つからないのでエラーになっている、ということです。 Henacatでは、サーブレットのクラスファイルを置くパスをソース内にべた書きしているので、 Eclipseの設定とかが原因とも思えません。 >作成したクラスファイルは、WEBAPPS_DIR = "C:\\Henacat_0_1\\webapps"配下に >設置しているのですが、そのほかに原因があるのでしょうか。 ここですが、 C:\Henacat_0_1\webapps\ の直下にShowBBS.classがあるような配置でしょうか。そうだとすると間違っています。 >書籍132ページのクラスファイルの部分が正確に理解できていない気もしていますが、ご教授いただけるとありがたいです。 書籍132ページにはこうあります。 >作成したクラスファイルの配置場所ですが、リスト3-15のWebApplication.javaの8 行目の >WEBAPPS_DIRに設定されているディレクトリの下に、Webアプリケーション名(testbbs)の >ディレクトリを作成し、その直下に入れてください(WEB-INFとかclassesディレクトリは不要)。 つまり、 C:\Henacat_0_1\webapps\testbbs\ の下にShowBBS.class, PostBBS.class, Message.classを配置するのが正解です。 testbbsフォルダが必要なのは、WebApplication.javaで以下のようにWEBAPPS_DIRにdirを くっつけたパスからクラスを検索しているからで、 20: Path pathObj = fs.getPath(WEBAPPS_DIR + File.separator + dir); 21: this.classLoader 22: = URLClassLoader.newInstance(new URL[]{pathObj.toUri().toURL()}); このdirの出処は、List3-13 Main.javaの8行目のこの呼び出しです。 8: WebApplication app = WebApplication.createInstance("testbbs"); 9: app.addServlet("/ShowBBS", "ShowBBS"); 10: app.addServlet("/PostBBS", "PostBBS"); これで回答になっていますでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]