2012-01-02 5 views
-1

私は、ユーザーがファイルをアップロードできるGWTアプリケーションを作っています。私の質問は...GWTと外部ライブラリとは何ですか?

何がGWTに間違っていますか?私のプロジェクトにjarファイルを含めると、それが気に入らないようです。私はEclipseを使用しています。すべてがうまくコンパイルされますが、実行時にUmbrellaExceptionsが発生します。最終的には、ClassNotFoundExceptionが発生しました。

私はこれについて何か他のところからお読みになりましたが、取引が何であるかを覚えていません。どんな理由であれ、GWTはいくつかのライブラリと互換性がありません。たとえば、java.ioに似ています。そのパッケージ内のすべてのものが、これを引き起こします。同様に、単純なファイルI/Oに対してもFileNotFoundExceptionを使用することはできません。

もう一度やり直してください:すべてがインポートされてコンパイルされますが、GWTは何らかの理由で特定のクラスをロードしたくありません。

最新の問題は、ファイルの検証にApacheのTikaを使用しようとしていることです。このよう

Metadata metadata = new Metadata(); 

としてのクラスのいずれかをインスタンス化しようとすることは、それが動作する方法に、GWTはemulate classes of the JREに持っているので、これがある

java.lang.ClassNotFoundException: org.apache.tika.metadata.Metadata 
at com.google.gwt.dev.shell.CompilingClassLoader.findClass(CompilingClassLoader.java:1061) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at gwtupload.client.Uploader$10.onSubmit(Uploader.java:454) 
at com.google.gwt.user.client.ui.FormPanel$SubmitEvent.dispatch(FormPanel.java:178) 
at com.google.gwt.user.client.ui.FormPanel$SubmitEvent.dispatch(FormPanel.java:1) 
at com.google.gwt.event.shared.GwtEvent.dispatch(GwtEvent.java:1) 
at com.google.web.bindery.event.shared.EventBus.dispatchEvent(EventBus.java:40) 
at com.google.web.bindery.event.shared.SimpleEventBus.doFire(SimpleEventBus.java:193) 
at com.google.web.bindery.event.shared.SimpleEventBus.fireEvent(SimpleEventBus.java:88) 
at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:127) 
at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129) 
at com.google.gwt.user.client.ui.FormPanel.fireSubmitEvent(FormPanel.java:618) 
at com.google.gwt.user.client.ui.FormPanel.submit(FormPanel.java:556) 
at gwtupload.client.Uploader.submit(Uploader.java:1051) 
at gwtupload.client.SingleUploader$1.onClick(SingleUploader.java:141) 
at com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:54) 
at com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:1) 
at com.google.gwt.event.shared.GwtEvent.dispatch(GwtEvent.java:1) 
at com.google.web.bindery.event.shared.EventBus.dispatchEvent(EventBus.java:40) 
at com.google.web.bindery.event.shared.SimpleEventBus.doFire(SimpleEventBus.java:193) 
at com.google.web.bindery.event.shared.SimpleEventBus.fireEvent(SimpleEventBus.java:88) 
at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:127) 
at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129) 
at com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116) 
at com.google.gwt.user.client.ui.Widget.onBrowserEvent(Widget.java:177) 
at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1351) 
at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1307) 
at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172) 
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:337) 
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:218) 
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136) 
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561) 
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269) 
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) 
at com.google.gwt.core.client.impl.Impl.apply(Impl.java) 
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:213) 
at sun.reflect.GeneratedMethodAccessor27.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172) 
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:292) 
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:546) 
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363) 
at java.lang.Thread.run(Unknown Source) 
+1

互換性に関するドキュメントは、http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsCompatibility.htmlとコンパイラhttp://code.google.com/webtoolkit/doc/latest/DevGuideCompilingAndDebuggingを参照してください。 .html#DevGuideJavaToJavaScriptCompiler –

答えて

5

GWTは、Webブラウザで実行されるJavascriptにコードをコンパイルします。ブラウザのJavascriptはファイルI/Oを実行できないため、java.ioを使用して簡単なファイルI/Oを実行することはできません。興味深いライブラリのほとんどは、GWTランタイムでエミュレートされていないクラスにアクセスします。

さらに、Javascriptにコンパイルするときに、GWTランタイムはJARファイルを自動的にインクルードしません。利用可能なソースコードが必要です.JavaScript生成でライブラリソースを含めるには、XML記述子を記述する必要があります。

延長GWTについては、this threadおよびthis tutorialを参照してください。

3

の原因となります。

GWTで別のクラスを使用する場合は、GWTの基本クラスから派生させる必要があります。クライアントサイドでGWTを拡張するライブラリがいくつか存在します。

ただし、サーバー側では任意のライブラリを使用できます。

+0

うーん。それを「派生」するにはどうすればいいですか?あるいは、あなたが話すこれらの他の図書館は何ですか? :o – Pojo

関連する問題