3

すぐに使える Vaadin アプリケーションを作成しようとしてきましたが、これまでのところ成功していません。

IntelliJ IDEA 14 を使用して、正しい Vaadin Maven アーキタイプを追加し、アプリケーションを作成しました。
最終的に 3 つのプロジェクト フォルダー (production、ui、widgetset) が作成されます。チュートリアルによると、src. ともかく。

そのため、Tomcat でデプロイしようとすると、悪名高いメッセージが表示されます

要求されたリソース [/VAADIN/widgetsets/com.vaadin.DefaultWidgetSet/com.vaadin.DefaultWidgetSet.nocache.js] がファイル システムまたはクラス ローダーから見つかりません。

エラー。それを解決するために web.xml ファイルを変更する方法についての十分な記事。ただし、変更するweb.xml ファイルはありません。

また、クライアント js を追加する必要もないので、実際には必要ありません。必要なのはサーバー側の Vaadin だけです。

WidgetSet の依存関係全体を取り除き、それによってこのエラーも取り除き、最も基本的なサーバー側の Vaadin アプリケーションをすべての凝ったものなしで実行することはできますか?

client compilerwidgetset 、およびその他すべてへのすべての参照をコメントアウトしようとしましたが、Java に関する私の貧弱な知識で可能になり、その過程で何日も無駄になりました。

いくつかの天才的な洞察は素晴らしいでしょう。前もって感謝します。

4

1 に答える 1

3

では、Vaadin がどのように機能するかについて大まかな考えをお持ちですね。いくつかのことを明確にし、興味のある他の人にも関連情報を提供するために、少し背景情報を示します。

GWT のアイデアは、Java でアプリを作成し、GWT コンパイラーを介して実行するというものです。ブラウザーで直接実行できる JavaScript が表示されます。コンパイラー自体が GWT のほとんどです。ウィジェットまたはコンポーネントに関する既成の機能のオプションは非常に限られています。GWT ユーザーまたは他のフレームワーク メーカーにウィジェット/グラフィカル ギャップを埋めさせるのは、むしろ「自分でやる」という考え方です。

Vaadin は GWT を使用しますが、GWT で構築されたほとんどのフレームワークとは少し異なる方法で使用します。他の GWT 拡張フレームワークと同様に、Vaadin には一連のウィジェットが含まれており、ウィジェットを変更する必要なく、アプリのほとんどの部分を構築することができます。Vaadin が異なる点は、ウィジェットをプリコンパイルしてその上に置き、サーバーからウィジェットを操作できる通信マネージャーを提供することです。この重要な違いは、他のほとんどすべての GWT フレームワークでは、UI を変更するたびに GWT コンパイラーを実行する必要があるのに対し、Vaadin ではサーバーがレイアウトとウィジェットを JSON メッセージで操作するため、実行する必要がないことです。Vaadin では、ウィジェットを使用するときではなく、ウィジェットの動作を変更するときにコンパイルします。

Vaadin では常にアプリケーションを「GWT コンパイル」する必要がないため、基本的なニーズに合わせて事前にコンパイルされたウィジェット セットを提供できます。これは DefaultWidgetSet と呼ばれます。クライアント側の変更を行ったり、ルート ディレクトリにあるアドオンを使用したりしない限り、これで十分です。

そして、実際の問題に。あなたが使用しているアーキタイプは 1 週間前に発表されました。あなたが参照しているチュートリアルはわかりませんが、古いアーキタイプをまだ参照しているため、更新する必要があると思います。通常、次の手順でアプリを実行できるはずです。

  1. アーキタイプでプロジェクトを作成する
  2. mvn installルートフォルダで実行
  3. ui フォルダーで実行mvn jetty:runします (または、IDE を使用して、Tomcat などの別のサーブレット コンテナーに ui をデプロイします)。

投稿したエラー メッセージが表示されるため、アプリケーションが実際にはプリコンパイル済みバージョンを使用しようとしていることを示しています。これは問題ありませんが、何らかの理由でそれを見つけることができません。これは、その中の vaadin-client-compiled 依存関係から、widgetset モジュールから取得する必要があります。

<dependency>
  <groupId>com.vaadin</groupId>
  <artifactId>vaadin-client-compiled</artifactId>
  <version>${vaadin.version}</version>  
</dependency>

${vaadin.version} はグローバルに定義できます (そこにあるはずです)。または、7.3.7. 何らかの理由でこれが見つからないようです。そこにない場合は、ウィジェットセット pom.xml に追加し、ウィジェットmvn installセット (または親、両方で問題ありません) で実行します。次に、ui に移動し、サーバーを再起動しますmvn jetty:run

確かではありませんが、アーキタイプにはカスタム ウィジェット セットがあり、コンパイル済みのウィジェット セットに依存していないと推測されます。その後、カスタムの代わりにデフォルトのウィジェットセットが必要になり、UI クラスでウィジェットセットの注釈を削除しましたが、デフォルトのウィジェットセットの依存関係を追加していません。

あなたのユースケースは非常に単純なので、問題のアーキタイプは少しやり過ぎかもしれません。クライアント側を開発しない場合、プロジェクトを ui と widgetset に分割する理由はありません。この時点で、実稼働可能な展開パッケージ (実稼働モジュール) を構築するためのモジュールは確実に範囲外です。その意味で、widgetset、production、parent モジュールはまったく関係ありません。

よりシンプルなプロジェクト構造が必要な場合は、https ://github.com/Peppe-/hello-world にある私の git リポジトリを複製できます。古い Vaadin のデフォルトの単一モジュール アーキタイプをベースにしていますが、純粋にサーバー サイドを開発するのに必要のないものはすべて、手間をかけずに取り除きました。pom.xml の宣言行は約 200 行から 80 行に減りましたが、これは、追加機能を使用する場合は、元に戻す必要があることも意味します。コンパイラのように、または css を追加する場合 (テーマの変更)。次のコマンドで取得して実行できます。

git clone https://github.com/Peppe-/hello-world.git
cd hello-world
mvn jetty:run

または、最初のステップの後、それを IDEA にインポートして、そこから実行できます。さらに、独自のパッケージ名を使用する場合は、(src 内のフォルダーの名前を変更して) パッケージの名前を変更します。

すみません、私は少し夢中になってとりとめのないことをしました。私が何かを見逃した場合は、すべての質問をしてください。

于 2014-12-22T18:17:30.910 に答える