52313


SpamFilterプロジェクト(
<https://github.com/lamrongol/JapaneseTwitterSpamFilter/blob/master/src/main/scala/lamrongol/twitter/spamfilter/SimpleSpamFilter.scala>
)で`sbt assembly`を実行すると成功しjarファイルができるのですが、それを以下のようなコマンドで実行すると、

[code]

    java -cp .\SpamFilter-assembly-1.0.jar lamrongol.twitter.spamfilter.SimpleSpamFilter
    
[/code]

以下のようなエラーが出て正常に動作しません。

[code]

    Exception in thread "main" java.lang.ExceptionInInitializerError
            at lamrongol.twitter.spamfilter.SimpleSpamFilter.main(SimpleSpamFilter.scala)
    Caused by: java.nio.charset.MalformedInputException: Input length = 1
            at java.nio.charset.CoderResult.throwException(CoderResult.java:281)
            at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:339)
            at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
            at java.io.InputStreamReader.read(InputStreamReader.java:184)
            at java.io.BufferedReader.fill(BufferedReader.java:161)
            at java.io.BufferedReader.readLine(BufferedReader.java:324)
            at java.io.BufferedReader.readLine(BufferedReader.java:389)
            at scala.io.BufferedSource$BufferedLineIterator.hasNext(BufferedSource.scala:72)
            at scala.collection.Iterator$$anon$13.hasNext(Iterator.scala:413)
            at scala.collection.Iterator$class.foreach(Iterator.scala:742)
            at scala.collection.AbstractIterator.foreach(Iterator.scala:1194)
            at lamrongol.twitter.spamfilter.SimpleSpamFilter$.loadResource(SimpleSpamFilter.scala:64)
            at lamrongol.twitter.spamfilter.SimpleSpamFilter$.<init>(SimpleSpamFilter.scala:16)
            at lamrongol.twitter.spamfilter.SimpleSpamFilter$.<clinit>(SimpleSpamFilter.scala)
            ... 1 more
    
[/code]


CC BY-SA 4.0
2019-01-24T00:31:48.597
52273
2019-01-26T06:13:51.837
2019-01-24T23:59:34.200
816
816
question
scala sbt
sbt assemblyは成功するのに実行するとExceptionInInitializerErrorが出る


調べたところExceptionInInitializerErrorが出るのはclass(object)の初期化に失敗したときであり、今回はjarではjava.nio.charset.MalformedInputExceptionが起きてしまうことが原因だとわかりました。

`scala.io.Source.fromInputStream(stream)`を`scala.io.Source.fromInputStream(stream,
"UTF-8")`と文字コードを追加することで解決しました。


CC BY-SA 4.0
2019-01-25T07:49:07.040
52313
2019-01-26T06:13:51.837
2019-01-26T06:13:51.837
816
816
52273
answer