EclipseをJava EEのMars 2用に使用しています。まずJava 8とApache Tomcat 8.0.xを使用してサーブレット・アプリケーションを作成しました。 IDEとそれはうまく動作します。Apache Tomcat 8.0はKotlinで書かれたサーブレット・クラスをEclipse for Java EE、Mars 2
今、コードをKotlinに移植しようとしています。しかし、Apache Tomcatサーバーは、以下の情報のように、クラスLoginServlet
を見つけてロードできません。
私はヘルパークラスとちょうどLoginServlet
という名前のサーブレットクラスを移植しました。私は裸の骨の骨格を提示するために、この問題のコードの残りの部分をすべて削除しています。ここで
は私のセットがアップしている:
package bookyard.server;
// import statements ommitted for brevity
open class LoginServlet : HttpServlet() {
override fun doGet(request : HttpServletRequest, response : HttpServletResponse) {
val msg: String = "HTTP GET method not supported.";
try {
response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg);
} catch (e: IOException) {
e.printStackTrace();
}
}
override fun doPost(request : HttpServletRequest, response : HttpServletResponse) {
this.doPostInternal(request, response);
}
private fun doPostInternal(request: HttpServletRequest, response: HttpServletResponse) {
...
}
}
私が最初に@WebServlet("/login")
アノテーションでLoginServlet
クラスを注釈付きが、それは、サーバがうまく走ったが、私にパス/ログインのため、さらにはのための404を与えましたServletContext
パスhttp://localhost:8080/BookyardServer/。
だから、私はWEB-INF\web.xml
ファイルへのサーブレット構成を移動し、それが次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>BookyardServer</display-name>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>bookyard.server.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
マイプロジェクトビルドパスは私のコードが使用するすべてのライブラリへの参照を含んでいます。そのスナップショットがここに用意されています。私プロジェクト・ファセットとターゲット・ランタイムで
、私はのApache Tomcat 8.0ランタイムへの参照を持っています。
しかし、私デバッグとしてとき - >デバッグサーバに、ブラウザは次のエラーを報告します。
HTTP Status 500 - Error instantiating servlet class bookyard.server.LoginServlet
message Error instantiating servlet class bookyard.server.LoginServlet
description The server encountered an internal error that prevented it from fulfilling this request.
exception javax.servlet.ServletException: Error instantiating servlet class bookyard.server.LoginServlet org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Unknown Source)
root cause java.lang.ClassNotFoundException: bookyard.server.LoginServlet org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1332) org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1166) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Unknown Source)
私は、これは何かのを持っているかなり確信しています%CLASSPATH%としてください。ただし、わかりません。私はApache Tomcat jarファイルをクラスパスに設定しました。私のコードが使用するすべてのものはクラスパスにもあります。
私のサーブレットクラスをロードすることができませんなぜ私はわかりません。助けてもらえますか?
これとあなたの2つの他のクラスパス関連の問題は、非常に幅広い「テクニカルサポート」タイプの質問と思われます。何が良い質問か:http://stackoverflow.com/help/how-to-ask ... IDEがWebアプリケーションとどのように動作するのか、Webアプリケーションにクラスファイルをどのように配備するのかを理解していれば、プロジェクトの一部が壊れています。エラーメッセージが表示されている間違った証拠をすべて表示するので、基礎を学ぶ時間がかかりませんでした。 Google、あなたの同僚に尋ね、あなたの宿題をし、質問をする前に基礎を学ぶ。これは厳しいように見えるかもしれませんが、インタラクティブなヘルプのための他のサイトがあります –