2016-04-23 5 views
0

でWURFLを使用することができません:私はScalaのためのWURFLのデモアプリケーションを実行するとScalaの

object Demo { 

    def main(args: Array[String]) { 

    // Create WURFL passing a GeneralWURFLEngine object with a wurfl xml 
    val wurflWrapper = new Wurfl(new GeneralWURFLEngine("classpath:/resources/wurfl.zip")) 

    // Set cache provider 
    wurflWrapper.setCacheProvider(new LRUMapCacheProvider) 

    // Set Performance/Accuracy Mode 
    wurflWrapper.setTargetAccuracy 

    // Set Capability Filter 
    wurflWrapper.setFilter(
     "can_assign_phone_number", 
     "marketing_name", 
     "brand_name", 
     "model_name", 
     "is_smarttv", 
     "is_wireless_device", 
     "device_os", 
     "device_os_version", 
     "is_tablet", 
     "ux_full_desktop", 
     "pointing_method", 
     "preferred_markup", 
     "resolution_height", 
     "resolution_width", 
     "xhtml_support_level") 

    // User-Agent here 
    var userAgent = "" 

    // Defining headers 
    var headers = Map("Accept-Datetime"->"Thu, 31 May 2007 20:35:00 GMT") 
    headers += ("Content-Type"-> "application/x-www-form-urlencoded") 

    var device = wurflWrapper.deviceForHeaders(userAgent, headers) 

    val matchType = device.matchType 
    if (matchType == MatchType.conclusive) 
    { 
     println("Match Type is conclusive") 
    } 

    val wireless = device.capability("is_wireless_device") 
    println("Is wireless: " + wireless) 

    } 
} 

を、私はこの例外を取得:

[main] ERROR net.sourceforge.wurfl.core.GeneralWURFLEngine - cannot initialize: java.lang.NullPointerException: in is null 
java.lang.NullPointerException: in is null 
    at java.util.zip.ZipInputStream.<init>(ZipInputStream.java:101) 
    at java.util.zip.ZipInputStream.<init>(ZipInputStream.java:80) 
    at net.sourceforge.wurfl.core.resource.FileLoader.fromZipFile(FileLoader.java:248) 
    at net.sourceforge.wurfl.core.resource.FileLoader.openInputStream(FileLoader.java:230) 
    at net.sourceforge.wurfl.core.resource.FileLoader.getStream(FileLoader.java:288) 
    at net.sourceforge.wurfl.core.resource.XMLResource.getData(XMLResource.java:163) 
    at net.sourceforge.wurfl.core.resource.DefaultWURFLModel.init(DefaultWURFLModel.java:115) 
    at net.sourceforge.wurfl.core.resource.DefaultWURFLModel.<init>(DefaultWURFLModel.java:107) 
    at net.sourceforge.wurfl.core.GeneralWURFLEngine.init(GeneralWURFLEngine.java:340) 
    at net.sourceforge.wurfl.core.GeneralWURFLEngine.initIfNeeded(GeneralWURFLEngine.java:319) 
    at net.sourceforge.wurfl.core.GeneralWURFLEngine.getDeviceForRequest(GeneralWURFLEngine.java:451) 
    at com.scientiamobile.wurfl.Wurfl.deviceForHeaders(Wurfl.scala:77) 
    at com.Demo$.main(Demo.scala:49) 
    at com.Demo.main(Demo.scala) 
Exception in thread "main" net.sourceforge.wurfl.core.exc.WURFLRuntimeException: WURFL unexpected exception 
    at net.sourceforge.wurfl.core.GeneralWURFLEngine.initIfNeeded(GeneralWURFLEngine.java:322) 
    at net.sourceforge.wurfl.core.GeneralWURFLEngine.getDeviceForRequest(GeneralWURFLEngine.java:451) 
    at com.scientiamobile.wurfl.Wurfl.deviceForHeaders(Wurfl.scala:77) 
    at com.Demo$.main(Demo.scala:49) 
    at com.Demo.main(Demo.scala) 
Caused by: java.lang.NullPointerException: in is null 
    at java.util.zip.ZipInputStream.<init>(ZipInputStream.java:101) 
    at java.util.zip.ZipInputStream.<init>(ZipInputStream.java:80) 
    at net.sourceforge.wurfl.core.resource.FileLoader.fromZipFile(FileLoader.java:248) 
    at net.sourceforge.wurfl.core.resource.FileLoader.openInputStream(FileLoader.java:230) 
    at net.sourceforge.wurfl.core.resource.FileLoader.getStream(FileLoader.java:288) 
    at net.sourceforge.wurfl.core.resource.XMLResource.getData(XMLResource.java:163) 
    at net.sourceforge.wurfl.core.resource.DefaultWURFLModel.init(DefaultWURFLModel.java:115) 
    at net.sourceforge.wurfl.core.resource.DefaultWURFLModel.<init>(DefaultWURFLModel.java:107) 
    at net.sourceforge.wurfl.core.GeneralWURFLEngine.init(GeneralWURFLEngine.java:340) 
    at net.sourceforge.wurfl.core.GeneralWURFLEngine.initIfNeeded(GeneralWURFLEngine.java:319) 
    ... 4 more 

"wurfl.zipは" ウェル "リソース" の下に位置しています。 私はまた、それを主なScalaクラスパスに追加しようとしましたが、まだ運がありません。コードの観点

val wurflWrapper = new Wurfl(new GeneralWURFLEngine("classpath:/resources/wurfl.zip"))

から

+0

Luca Passani、ScientiaMobile CTOはこちら。今すぐエンジニアリングチームにmsgを送って、月曜日の朝にこれを見るように依頼しています –

+0

その間、使用しているライブラリとwurfl.xmlの正確なバージョンに関する詳細情報を提供したい場合があります –

+0

Thanks Luca、Java ver:1.7.1.0、Scala ver:1.7.1.0。直接ファイル名を:classpath:/resources/wurfl.zipの代わりに使用するとうまくいきます。 – bashan

答えて

1

は、あなたのWURFLエンジンを初期化する適切な方法です。

デモをIDE(IDEA、Eclipse、Netbeans)内で実行している場合や、コマンドラインを使用して実行している場合、またはその他の方法でデモを実行する方法についての情報を提供したい場合があります。 Mavenを使用しているかどうかを知ることも有益です。

コマンドラインを使用している場合は、Scalaアプリケーションの起動方法とクラスパスの設定方法のサンプルを提供してください。リソースファイルがclassesディレクトリに含まれていないので、あなたが達人でコンパイルし、-cpクラスを使用してターゲットディレクトリに直接プロジェクトを実行しているシナリオを想定し

は、実行は、あなたのクラスパスのエラーになります。

wurfl-scala-example-.jarがクラスパスに含まれていることを確認してください。

IntelliJ IDEA内でデモプロジェクトを使用している場合は、リソースディレクトリが「リソース」としてマークされていることを確認してください。そうでなければ、IDEA実行ツールはリソースとしてwurfl.zipファイルを含みません。

これが役に立ちます。

+0

あなたが気づいたように、ファイル名やパスを直接使用することは、WURFLを初期化する有効な方法です。 –