0

私は51Degrees.mobiをMaven、JSF、およびJavaプロジェクトで動作させようとしていますが、今のところ運がありません。http://51degrees.mobi/Support/Documentation/Java.aspxから2つのjarファイルをダウンロードし、指示に従いました。私は今このようなフィルターを持っています

    import fiftyone.mobile.detection.BaseDeviceInfo;
    import fiftyone.mobile.detection.Provider;
    import fiftyone.mobile.detection.binary.BinaryException;
    import fiftyone.mobile.detection.binary.Reader; 

     public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {

    HttpServletRequest httpRequest = (HttpServletRequest) request;
    String s = httpRequest.getHeader("user-agent");

    //Create a Provider object
      Provider p;
    try {
        p = Reader.create();


    } catch (BinaryException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    //Provider p = Reader.create(PATH_TO_PREMIUM_DATA);


      //Read in a HttpServletRequest or User Agent String
      BaseDeviceInfo b = p.getDeviceInfo(s);

      //Get the value of a property
      String result = b.getFirstPropertyValue("IsMobile");

      //Check the property value
      if(result.equals("True")){
        System.out.println("This is mobile");
      }

      if(result.equals("False")){
        System.out.println("This is not mobile");
      }

      //Before exiting your application, ensure you dispose of the Provide to
      //release it's resources such as it's thread pool
       p.destroy();
   }   

それはエラーをスローしません。オンラインで調べたところ、pomファイルに追加する必要のある依存関係が見つかりました。

     <dependency><!-- Start 51Degrees.mobi dependencies -->
        <groupId>mobi.51degrees</groupId>
        <artifactId>detection</artifactId>
        <version>2.1.15.1</version>
    </dependency><!-- End 51Degrees.mobi dependencies -->

この場合も、ファイル自体にエラーはスローされませんが、ディレクトリでmvn clean installを使用すると、次のエラーが発生します。

     [ERROR] COMPILATION ERROR :
     [INFO] -------------------------------------------------------------
     [ERROR] \ea\portals\redirectionportal\src\main\java\com\filters\MyFilter.java:[18,32]          error: package fiftyone.mobile.detection does not exist

     [ERROR] \ea\portals\redirectionportal\src\main\java\com\filters\MyFilter.java:[19,32] error: package fiftyone.mobile.detection does not exist

     [ERROR] \ea\portals\redirectionportal\src\main\java\com\filters\MyFilter.java:[20,39] error: package fiftyone.mobile.detection.binary does not exist

     [ERROR] \ea\portals\redirectionportal\src\main\java\com\filters\MyFilter.java:[21,39] error: package fiftyone.mobile.detection.binary does not exist

     [ERROR] \ea\portals\redirectionportal\src\main\java\com\filters\MyFilter.java:[45,4] error: cannot find symbol

     [ERROR] \ea\portals\redirectionportal\src\main\java\com\filters\MyFilter.java:[47,7] error: cannot find symbol

     [ERROR] \ea\portals\redirectionportal\src\main\java\com\filters\MyFilter.java:[50,11] error: cannot find symbol

     [ERROR] \ea\portals\redirectionportal\src\main\java\com\filters\MyFilter.java:[60,4] error: cannot find symbol

     [INFO] 8 errors
     [INFO] -------------------------------------------------------------
     [INFO] ------------------------------------------------------------------------
     [INFO] BUILD FAILURE
     [INFO] ------------------------------------------------------------------------
     [INFO] Total time: 3.730s
     [INFO] Finished at: Wed Nov 14 12:45:35 GMT 2012
     [INFO] Final Memory: 16M/39M
     [INFO] ------------------------------------------------------------------------
     [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.1:compile (default-         compile) on project redirectionportal: Compilation failure: Compilation failure:
     [ERROR] \ea\portals\redirectionportal\src\main\java\com\filters\MyFilter.java:[18,32]          error: package fiftyone.mobile.detection does not exist
     [ERROR]
     [ERROR] \ea\portals\redirectionportal\src\main\java\com\filters\MyFilter.java:[19,32] error: package fiftyone.mobile.detection does not exist
     [ERROR]
     [ERROR] \ea\portals\redirectionportal\src\main\java\com\filters\MyFilter.java:[20,39] error: package fiftyone.mobile.detection.binary does not exist
     [ERROR]
     [ERROR] \ea\portals\redirectionportal\src\main\java\com\filters\MyFilter.java:[21,39] error: package fiftyone.mobile.detection.binary does not exist
     [ERROR]
     [ERROR] \ea\portals\redirectionportal\src\main\java\com\filters\MyFilter.java:[45,4] error: cannot find symbol
     [ERROR]
     [ERROR] \ea\portals\redirectionportal\src\main\java\com\filters\MyFilter.java:[47,7] error: cannot find symbol
     [ERROR]
     [ERROR] \ea\portals\redirectionportal\src\main\java\com\filters\MyFilter.java:[50,11] error: cannot find symbol
     [ERROR]
     [ERROR] \ea\portals\redirectionportal\src\main\java\com\filters\MyFilter.java:[60,4] error: cannot find symbol
     [ERROR] -> [Help 1]
     [ERROR]
     [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
     [ERROR] Re-run Maven using the -X switch to enable full debug logging.
     [ERROR]
     [ERROR] For more information about the errors and possible solutions, please read the following articles:
     [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

誰かアイデアはありますか?

4

3 に答える 3

2

ルールに従って、私はJava開発者として51Degrees.mobiで働いていると述べています。問題を解決したかどうか、現時点でこのページを見てわかりませんか?それで、もう少し情報を追加しようと思いました。

まず、2つのJarファイルがある場合は、2.1.15.1ではなく2.1.16.1を使用していますが、これは問題に直接影響しないはずですが、わかりやすくするために言いたいと思います:)。

また、51Degrees.mobiのバージョン2.1.16.1ソリューションは、現在の回答が投稿された後、Maven中央リポジトリを介して最近利用可能になりました。だから今あなたがしなければならないのはあなたのpomにこの依存関係を追加することです:

 <dependency><!-- Start 51Degrees.mobi dependencies -->
    <groupId>net.sourceforge.fiftyone-java</groupId>
    <artifactId>51Degrees.mobi.detection.core</artifactId>
    <version>2.1.16.1</version>
</dependency><!-- End 51Degrees.mobi dependencies -->

2番目のjarを使用したい場合は、「core」を「webapp」に置き換えてください。

于 2012-11-30T11:37:53.220 に答える
1

51Degrees.mobiリポジトリ(ローカルまたはリモート)にあることを確認してください。Mavenパブリックリポジトリでクイック検索を行いましたが、見つかりません。

jarがローカルフォルダーにある場合。使用できます

mvn install:install-file -Dfile=your-artifact-1.0.jar \
                         [-DpomFile=your-pom.xml] \
                         [-Dsources=src.jar] \
                         [-Djavadoc=apidocs.jar] \
                         [-DgroupId=org.some.group] \
                         [-DartifactId=your-artifact] \
                         [-Dversion=1.0] \
                         [-Dpackaging=jar] \
                         [-Dclassifier=sources] \
                         [-DgeneratePom=true] \
                         [-DcreateChecksum=true]

リンクのmavenインストールプラグインを確認してください

于 2012-11-14T12:59:39.143 に答える
1

リポジトリで jar を探してみてください。jar は次の場所にあります。

~/.m2/repository/mobi/51degrees/detection/2.1.15.1/

そこにある場合は、パッケージの下にクラスが含まれているかどうかを確認してください

fiftyone.mobile.detection

- アップデート -

この jar が見つからない場合は、次のいずれかのオプションを使用できます。

  1. ''システム'' スコープの依存関係を使用してください。ビルド プラットフォーム/環境が依存するようになるため、お勧めしませんが、最も簡単な方法です。

  2. mvn install:install-filejar をローカルの Maven リポジトリに配置するために使用します。最初の方法よりもはるかに優れていますが、各ローカル環境でmavenを実行する前にこのコマンドを使用する必要があります/ローカルリポジトリがパージされます...

  3. サーバー上のどこかに独自の Maven リポジトリを維持し、このリポジトリを使用するように Maven をマップします。これは、私が知っている限りで最良のアプローチです。「Nexus」や「Artifactory」などのリポジトリ プロキシを使用するのが最適です。最悪の場合、リポジトリをプレーン ファイル システムとして作成し、Web サーバー (Apache など) からアクセスできるようにすることができます。このリポジトリでは、パブリック Maven リポジトリに存在しないサードパーティの jar、独自のアーティファクト、またはフリー/オープンソースではないためパブリック Maven リポジトリで維持できないアーティファクトを格納できます (使用できる商用ソフトウェア)。

お役に立てれば

于 2012-11-14T13:08:00.570 に答える