2012-03-22 10 views
3

私はここで私のウィットの終わりです - この問題に直面したことはありませんでした。 Restlet 2.0が確実に稼動していることを確認するために、HelloWorldアプリケーションを簡単にセットアップすることは比較的簡単です。しかし、私は前に遭遇したことのない奇妙な例外に直面しています。私は私のクラスパスにjarファイルだけでなく、WEB-INF/libフォルダを持っていますが、私は次の例外を取得しておく何らかの理由:RestletがJSONコンバータを登録できないのはなぜですか?

INFO: Unable to register the helper org.restlet.ext.json.JsonConverter 
java.lang.NoClassDefFoundError: org/json/JSONException 
    at java.lang.Class.getDeclaredConstructors0(Native Method) 
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) 
    at java.lang.Class.getConstructor0(Class.java:2699) 
    at java.lang.Class.newInstance0(Class.java:326) 
    at java.lang.Class.newInstance(Class.java:308) 
    at org.restlet.engine.Engine.registerHelper(Engine.java:718) 
    at org.restlet.engine.Engine.registerHelpers(Engine.java:753) 
    at org.restlet.engine.Engine.registerHelpers(Engine.java:793) 
    at org.restlet.engine.Engine.discoverConverters(Engine.java:501) 
    at org.restlet.engine.Engine.<init>(Engine.java:337) 
    at org.restlet.engine.Engine.register(Engine.java:248) 
    at org.restlet.engine.Engine.register(Engine.java:237) 
    at org.restlet.engine.Engine.getInstance(Engine.java:149) 
    at org.restlet.engine.Engine.getLogger(Engine.java:204) 
    at org.restlet.Context.<init>(Context.java:160) 
    at org.restlet.Context.<init>(Context.java:133) 
    at org.restlet.ext.servlet.ServerServlet.createComponent(ServerServlet.java:422) 
    at org.restlet.ext.servlet.ServerServlet.getComponent(ServerServlet.java:763) 
    at org.restlet.ext.servlet.ServerServlet.init(ServerServlet.java:881) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:242) 
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1428) 
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:1060) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:187) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641) 
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97) 
    at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185) 
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165) 
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791) 
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693) 
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954) 
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170) 
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135) 
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102) 
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88) 
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76) 
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53) 
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57) 
    at com.sun.grizzly.ContextTask.run(ContextTask.java:69) 
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330) 
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: java.lang.ClassNotFoundException: org.json.JSONException 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:959) 
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1430) 
    ... 45 more 

次のjarファイルは、私のクラスパスおよびWEB-INF/libのフォルダにあります:

org.json.jar 
org.restlet.jar 
org.restlet.ext.servlet 
org.restlet.ext.json 

Eclipseを使用してプロジェクトを構築し、Glassfishにデプロイしています。 web.xmlなどはすべて問題なく、デプロイメントエラーはありませんが、これはしばらく私の頭を傷つけてしまいました。

アイデア?

答えて

2

を知りません。私はjackson表現をオーバーライドし、それがインポートするいくつかの依存関係を削除したいと思いますが、私が行ったとき、jacksonコンバータは発見されません。 私はなぜ私の場合には:瓶は、org.restlet.engine.converter.ConverterHelperと呼ばれるファイルを持つMETA-INF/servicesフォルダが含まれていることがわかりました。それが発見の仕組みです。

私のパスにファイルを追加しようとしましたが、動作しませんでした。わかりません。だから私はジャクソンコンバータを登録し終わった。

Engine.getInstance().getRegisteredConverters().add(new JacksonConverter()); 
0

何らかの理由で、Restlet Java EEバージョンのorg.jsonフォルダにあるRestlet Distributionからファイルを置き換えたときにエラーが発生しました。

は多分何かが私はJSONのWebサイトから持っていたorg.json.jarに欠けていたようだ、私は同じまたは類似の問題を抱えていた...

+1

私は、なぜ私の場合、jarファイルにorg.restlet.engine.converter.ConverterHelperという名前のMETA-INF/servicesフォルダが含まれているのかを知っています。それが発見の仕組みです – ZiglioUK

0

あなたのアプリケーションはライブラリを見つけることができないようです。 Eclipseでアプリケーションを構築する場合は、ライブラリがエクスポートされていることを確認してください。 [ビルドパス]セクションに移動し、ライブラリをエクスポートするチェックボックスがオンになっていることを確認します。

関連する問題