Windows上のNetBeans7.4でRESTサーバーを開発しています(Java SEランタイム1.7.0_21-b11を使用)。次に、.warは、Tomcat(Java 1.7.0_45-b18)を実行するLinuxマシンにデプロイされ、antを使用してTeamCity自動ビルドが実行されます。 .warを構築する
いくつかのメソッドのみを実装するHttpServletRequestを実装するカスタムビルドクラスを使用して、RESTメソッドを単体テストしようとしています。
public class HttpMockReq implements HttpServletRequest { @Override ... }
私の問題は、そのインターフェイスの定義がWindowsの開発環境とLinuxでantを使用してコンパイルした場合で異なることです。具体的には、Linuxバージョンには存在しないWindowsのHttpServletRequestで3つのメソッドが定義されています。
changeSessionId,
upgrade
そして
setContentLength
Linuxビルドは、これらの(偽の)メソッドで何もオーバーライドしないと文句を言います。
私は実際にHttpServletResponseで同じ問題を抱えています
setContentLengthLong
さまざまなライブラリ、ツール、Javaのインストールに少し迷っています。Windows側(Java 7のバージョンが少し古い)がこれらのインターフェースのより広範な定義をどのように/なぜ持っているのか理解できません。
副次的な質問:これらの環境の1つに、@ Ignoreなどを使用してより豊富なまたはより貧弱な実装を受け入れさせる方法はありますか?
おそらくあなたの問題はあなたが使っているTomcatのバージョンです。この方法changeSessionId()
は、Tomcat8.0.Xでのみサポートされているサーブレット3.1仕様からのものです。代わりにTomcat7.0.Xがインストールされている可能性があります。チェックして、trueの場合は、Tomcat 8.0.Xをダウンロードしてインストールしてみてください(http://を参照)。 tomcat.apache.org/whichversion.html)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加