2016-03-15 103 views
0

我試圖將端口Apache Flink移植到Android。該框架部分寫在Scala和該單詞的執行過程中計數例如,將拋出一個異常(有很多人說我會不會發布)爲:在Android設備上運行scala代碼

... 
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lscala/sys/package$; 
at org.apache.flink.runtime.minicluster.FlinkMiniCluster.setDefaultCiConfig(FlinkMiniCluster.scala:196) 
at org.apache.flink.runtime.minicluster.LocalFlinkMiniCluster.generateConfiguration(LocalFlinkMiniCluster.scala:58) 
at org.apache.flink.runtime.minicluster.FlinkMiniCluster.<init>(FlinkMiniCluster.scala:76) 
at org.apache.flink.runtime.minicluster.LocalFlinkMiniCluster.<init>(LocalFlinkMiniCluster.scala:47) 
at org.apache.flink.client.LocalExecutor.start(LocalExecutor.java:114) 
at org.apache.flink.client.LocalExecutor.executePlan(LocalExecutor.java:173) 
at org.apache.flink.api.java.LocalEnvironment.execute(LocalEnvironment.java:90) 
at org.apache.flink.api.java.ExecutionEnvironment.execute(ExecutionEnvironment.java:855) 
at org.apache.flink.api.java.DataSet.collect(DataSet.java:410) 
at hk.ust.symlab.mobiflink.MainActivity$collectActivity.doInBackground(MainActivity.java:86) 
at hk.ust.symlab.mobiflink.MainActivity$collectActivity.doInBackground(MainActivity.java:81) 
at android.os.AsyncTask$2.call(AsyncTask.java:295) 
at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  
at java.lang.Thread.run(Thread.java:818)  
... 

的例外似乎在Android設備無法運行scala代碼(糾正我,如果我錯了)。

我發現很多崗位關於Android和Scala,但他們似乎更多階Android應用程序,使代碼更簡單和更短。

我發現this question關於該主題,但沒有幫助。

所以問題是:如何在Android設備上運行scala代碼?或者:Android可以運行Scala代碼嗎?

+1

你在那個應用程序中有scala運行時jar文件嗎? – Thilo

+0

你能否澄清一下你的問題。標題:「在Android設備上運行scala代碼」不是問題。我的帖子中也沒有看到問題。所以目前還不清楚你是問(a)Android可以運行Scala代碼,還是(b)我如何解決這個特定的問題。 – EJK

+0

@EJK理論上解決第一個問題解決了第二個問題。但無論如何,我編輯了這個問題。 – justHelloWorld

回答

2

Scala程序需要Scala運行時庫。您需要將該jar文件包含在您的應用程序中。

這不是特定於Android,但也適用於桌面Java。