私はあなたに短編小説を最初に伝えます。 Eclipseでjarファイル(Runnable Jarウィザードと "Package required libraries ..."を選択)を "Extract required libraries"の代わりにエクスポートすると、すべてのことが動作しますが、非常に遅くなってしまいます。私が抽出方法で私の瓶を作るなら、コードは最終的に起こります。私の最初のWebクライアントは「メディアタイプにMessageBodyWriterが見つかりませんでした...」(JSON)
org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json
私はMavenを使用していません。私はまだそれを知らない。私はほとんどがEclipseの中でほとんど経験はありませんが、私はそこに着いています。私はGensonがJSONの作成に必要なものを私に与えるだろうと思っていました。
私はMessageBodyWriterのための私のjarファイルとgrepをリストする場合、私は長い話に取得するには
1220 Tue Nov 15 10:29:02 CST 2016 javax/ws/rs/ext/MessageBodyWriter.class
47 Tue Nov 15 10:29:02 CST 2016 META-INF/services/javax.ws.rs.ext.MessageBodyWriter
を取得し、私は、Eclipseで単純なJavaプロジェクトを作成し、私のビルド・パスに外部のjarファイルを追加しました。 Eclipseは何かが不足していると不平を言うことはありません私のコードには未使用のこのことについての警告が1つか2つしかありません。輸出はどちらの方法でもうまく動作しますが問題はありません。執行のみが何らかの刺激を明らかにする。
私のリクエストクラスでは、すべてを正しく設定していると思います。これは想像できる最も単純なPOSTクライアントです。私は必要な空のコンストラクタ、正しい注釈を持っています。
@XmlRootElement
@Produces(MediaType.APPLICATION_JSON)
public class QQNotificationRequest {
@JsonProperty("id")
private int id;
@JsonProperty("subId")
private int subId;
@JsonProperty("type")
private int type;
@JsonProperty("scode")
private int scode;
@JsonProperty("datetime")
private String datetime;
...
これは
Response resp = m_webTarget.request(MediaType.APPLICATION_JSON).post(Entity.json(message));
「エクスポート」されていない瓶の中で何かがあるように、これらは私の外部のjarファイル
javax.ws.rs-api-2.0.1.jar
aopalliance-repackaged-2.5.0-b05.jar
hk2-api-2.5.0-b05.jar
hk2-locator-2.5.0-b05.jar
hk2-utils-2.5.0-b05.jar
javassist-3.20.0-GA.jar
javax.annotation-api-1.2.jar
javax.inject-2.5.0-b05.jar
javax.servlet-api-3.0.1.jar
jaxb-api-2.2.7.jar
jersey-guava-2.24.jar
org.osgi.core-4.2.0.jar
osgi-resource-locator-1.0.1.jar
persistence-api-1.0.jar
validation-api-1.1.0.Final.jar
jersey-client.jar
jersey-common.jar
jersey-container-servlet.jar
jersey-container-servlet-core.jar
jersey-media-jaxb.jar
jersey-server.jar
jargs.jar
genson-1.4.jar
jt400.jar
log4j-api-2.7.jar
log4j-core-2.7.jar
ある私が感じるに失敗した私の究極の呼び出しです正しくは、わかりません。ただ、Javaが大きなジャーの中の全てのジャーを爆発させる過程を経なければならないので、大きなジャーの内部にあるクラスでは実行を開始する必要があることが分かります。
すぐに失われましたが、一緒に繋がっています。私はどんな指針にも感謝します。
@peekskilletは、これらのサービス宣言ファイルのうちの1つだけがエクスポートされるという問題を説明しています。 Gensonに関しては、手動で登録することもできます。ジャージーのdoc [here](http://owlike.github.io/genson/Documentation/Extensions/#jax-rs-jersey--cie)をチェックしてください。 – eugen
私は@peekskilletの答えをまだ完全に理解していません.Gensonをクラスパスにドロップするだけで、自動的に幸福が引き起こされるというリンクがあります。 :-)私が実際に理解していないのは、jarファイルがjarファイルの束である場合、jarファイルが動作する理由です。もう少し耕していくつもりです。 –
上記のコメントを入力してから2分以内に、抽出されたjarsメソッドを使用して作業するようになりました。私はBuild Path-> Configure Build Pathに行き、 "Order and Export"タブでgenson-1.4.jarをリストの一番上に移動し、プロジェクトをrunnable jarにエクスポートしてテストしました。ここまでは順調ですね。 –