RESTful APIを作成する簡単な例を試しています。私はMaven jersey-quickstart-webapp
archtypeを使ってJersey Webアプリケーションを作成しました。 別のプロジェクト私は単純なクラス:SimpleClass
を作成しました。このメソッドには "hello"を返すメソッドが1つしかありません。私は、Webアプリケーション(私はデフォルトのMyResource
クラスを使用しています)で自分のメソッドでそのクラスのインスタンスを作成しようとしていて、そのメソッドを呼び出す "Hello"を取得します。 SimpleClass
のプロジェクトをJARファイルにエクスポートし、そのファイルをJerseyプロジェクトのビルドパスに追加し、関連するパッケージをインポートしました。 私は、ローカルサーバー上のWebアプリケーションを実行し、MyResource
メソッドを呼び出すと、私は根本的な原因(ちょうどトップの数行)でエラーが出ます:だからJersey REST Webアプリケーションから外部クラスを参照する
java.lang.NoClassDefFoundError: Lorg/test/simple/SimpleClass;
java.lang.Class.getDeclaredFields0(Native Method)
java.lang.Class.privateGetDeclaredFields(Class.java:2583)
java.lang.Class.getDeclaredFields(Class.java:1916)
、それはSimpleClassを見つけることができませんクラス。 ここで何が間違っていますか?私は本当に助けていただきありがとうございます! ありがとう、 ヤリフ。
新しい情報:Mavenを使用せずにRESTful Webサービスを作成しようとしました。単純な「Hello World」の例でプロジェクトを作成した後、別のプロジェクトから自分のクラスを追加しようとしました.jarをインポートしてビルドパスに追加し、作成するWebサービスにクラスを作成しましたサーバーにGETが行われたときのクラスのインスタンス。私のクラスは他のクラスのインスタンスをメンバとして含み、そのうちの1つはMongoDBデータベースに接続します。サービスを実行すると、次のようにHTTP 500エラーが発生します。 MultiException
には2つの例外があります。それらは次のとおりです:
1. java.lang.NoClassDefFoundError: com/mongodb/DBObject
2. java.lang.IllegalStateException: Unable to perform operation: create on org.notes.server.NotesServer
WebプロジェクトにMongoDB jarを追加することは役に立ちませんでした。私はここで大きなものを逃しているに違いない。 Webサービスに別のプロジェクト(そこに依存関係がある)で作成したコードを呼び出すにはどうすればよいですか?
私は、私はどこにもこれとなっていないのです取得することができます任意の助けを感謝します...
「ローカルサーバー上でWebアプリケーションをどのくらい実行しますか」あなたのlib jar(SimpleClassを含む)をそのサーバーのクラスパスに入れましたか?ライブラリに対してコンパイルするのに十分でない場合は、実行時にそのライブラリを利用できるようにする必要があります。 – radai
私がやったのは、ローカルのTomcatサーバーを起動し、Jerseyプロジェクトを右クリックし、[実行] - > [サーバーで実行]を選択することです。 JARをサーバーのクラスパスに追加するにはどうすればよいですか? –
mavenプロジェクトを使用しているのですが、ライブラリをmaven依存関係として追加するのではなく、 "IDEレイヤー"(eclipse?idea?)の依存関係として追加してください。依存関係を「適切に」(webappのpom.xmlファイルに)追加し、デプロイメントロジックがそれを拾い上げるかどうかを確認してください。 – radai