[解決済み] org.glassfish.jersey.servlet.ServletContainer ClassNotFoundException
2022-01-03 20:37:43
質問
でClassNotFoundExceptionが発生することがあります。
org.glassfish.jersey.servlet.ServletContainer
が、昨晩、Eclipse JunoでTomcatサーバー(v7)を起動/再起動の際、特異な現象が発生しました。
何が起こっているのかよくわからない。奇妙なのは、それ以前は完全にうまくいっていたのに、昨夜から起こり始めたことです。
以下はスタックトレースです。
Feb 25, 2014 11:11:19 AM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet com.att.ucomm.admin.UCommAdminFunctions as unavailable
Feb 25, 2014 11:11:19 AM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /UCommAdminFunctions threw load() exception
java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1671)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118 )
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1048)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:996)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4762)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5045)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)
at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3670)
at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:424)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1207)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1393)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1403)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1403)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1382)
at java.lang.Thread.run(Unknown Source)
Feb 25, 2014 11:11:19 AM org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/UCommAdminFunctions] is completed
Feb 25, 2014 11:13:33 AM org.apache.catalina.core.StandardWrapperValve invoke
INFO: Servlet com.att.ucomm.admin.UCommAdminFunctions is currently unavailable
以下は私の web.xml です。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>com.att.ucomm.admin.UCommAdminFunctions</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<!-- Register JAX-RS Application, if needed. -->
<init-param>
<param-name>com.att.ucomm.admin.UCommAdminFunctions</param-name>
<param-value>my.package.MyApplication</param-value>
</init-param>
<!-- Register resources and providers under my.package. -->
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.att.ucomm.admin</param-value>
</init-param>
<!-- Register my custom provider (not needed if it's in my.package) AND LoggingFilter. -->
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>com.att.ucomm.admin.SecurityRequestFilter;org.glassfish.jersey.filter.LoggingFilter</param-value>
</init-param>
<!-- Enable Tracing support. -->
<init-param>
<param-name>jersey.config.server.tracing</param-name>
<param-value>ALL</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>com.att.ucomm.admin.UCommAdminFunctions</servlet-name>
<url-pattern>/rest/*</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>
WEB-INF/lib に jersey 用の jar ファイルが残っていることを確認しました。
解決方法は?
問題点
java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer
を使おうとすることを示します。 ジャージー2.x サーブレットに ジャージー1.x のライブラリを使用します。
について ジャージー 1.x は、このようにしなければなりません。
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>sample.hello.resources</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
詳しくは
ジャージー1.xのドキュメント
.
を使いたい場合は
ジャージー2.x
を指定する必要があります。
ジャージー2.x
を使用します。mavenベースのプロジェクトでは、以下を使用することができます。
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.xx</version>
</dependency>
<!-- if you are using Jersey client specific features without the server side -->
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.xx</version>
</dependency>
について
ジャージー 2.x
に何も設定する必要はありません。
web.xml
このようなクラスを用意すれば十分です。
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("rest")
public class ApplicationConfig extends Application {
}
詳しくは ジャージーのドキュメント .
こちらもご覧ください。
関連
-
[解決済み] file(file, "rt") のエラー : complete.cases プログラム内の無効な 'description' 引数
-
[解決済み】gitが「Pull is not possible because you have unmerged files」と言うのはなぜですか?
-
[解決済み】Looper.prepare()を呼び出していないスレッド内でハンドラを作成できない。)
-
[解決済み】エラー。式はintegralまたはunscoped enum型でなければなりません。
-
[解決済み】count()パラメータは配列かlaravelのcountableを実装したオブジェクトでなければならない。
-
[解決済み】Heroku + node.jsのエラー(Webプロセスが起動後60秒以内に$PORTにバインドできなかった)。
-
[解決済み】C#でクエスチョンマークを2つ並べるとどんな意味になるのか?
-
[解決済み] [Solved] libpthread.so.0: error adding symbols: コマンドラインからDSOが見つからない
-
[解決済み】AdMobにアプリケーションを入れたら「ライブラリが見つからない」というエラーが出た
-
[解決済み] アパッチです。アプリケーションリスナーの設定エラー
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
合理的オブジェクトスクリプトコマンド
-
linux シェル学習ノート 2日目
-
[解決済み] file(file, "rt") のエラー : complete.cases プログラム内の無効な 'description' 引数
-
[解決済み】C++使用時、代入の左オペランドにlvalueが必要なエラーについて
-
[解決済み】「Error: デフォルトのデータセット例mtcarsとggplot2における「離散的なスケールに連続的な値が供給された」。
-
[解決済み】git pullの取り消し、レポを古い状態に戻す方法
-
[解決済み】「名前空間はフィールドやメソッドなどのメンバーを直接含むことはできない」 [閉店]のお知らせ]
-
[解決済み】ファイルにデータを書き込むときにこのエラーが発生する理由
-
[解決済み] [Solved] libpthread.so.0: error adding symbols: コマンドラインからDSOが見つからない
-
[解決済み] java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer