美文网首页
用eclipse+maven为scala编写的源程序打jar包

用eclipse+maven为scala编写的源程序打jar包

作者: yandaxin | 来源:发表于2017-09-11 20:35 被阅读0次

    模仿开发者提供的Simple Examples of EasyML中单机filesplit示例,使用scala语言编写单机程序,读取文件中存储的矩阵,判断矩阵有几行,奇数行输出1,偶数行输出0,矩阵的格式为:
    1,22,3,#
    2,11,5,#
    因此只需读取文件中的行,拼接成字符串,然后判断字符串中“#”的个数即可。 测试平台是在线版本:BDAStudio,以上为背景。

    因为不想安装IDEA,而本地已有eclipse+maven,因此在eclipse中安装scala插件,通过maven打包jar包。

    1.安装scala插件参考:小草君技术专栏
    最后一步:run as -->maven build..-->Goals:clean scala:compile compile package来避免默认的Java编译。
    因为导出的jar包在命令行中 java -jar xxx.jar,报错提示xxx.jar中没有主清单属性,经过 @小黑熊 提醒可能是打包方式出现错误。

    2.修改pom.xml来规避上述错误,参考博客:Defonds 的专栏,最终解决了问题,java -jar xxx.jar不再报错。

    3.上传到在线平台BDAStudio,CMD语句为java -cp xxx.jar checkmatrixrow
    因为是单机版程序所以CMD头是Java,分布式程序CMD头为Spark。checkmatrixrow是jar包中checkmatrixrow.class 文件所在的路径+文件名,因为我的checkmatrixrow.class就在jar包的第一层,所以只有文件名。

    提交成功 因为矩阵行数是偶数,后台输出 0

    最后附上写的第一个scala程序源码,配合EML平台使用,仅有一个输入in,即代码中的args(0),EML平台对每个program输入输出机制是第1个接口是args(0),第二个就是args(1),依次类推:

    import scala.io.Source
    import java.io._
    
    object checkmatrixrow {
      def main(args:Array[String])  {
    
        //read operation
        var inmatrix=""
        val file=Source.fromFile(args(0))
        for(line <- file.getLines)
        {
          inmatrix+=line
        }
        file.close
        
        //matrix format like 1,2,3,#4,5,6,#
        //check the number of '#'
    
        var outflag=""
        var numberofchar = inmatrix.length-inmatrix.replace("#","").length
        if(numberofchar%2==0){
          print("0")
          outflag = "0"
        }else{
          print("1")
          outflag = "1"
        }
       
        //write operation
        //val writer = new PrintWriter(args(1))
        //writer.write(outflag)
        //writer.close()
      }
    }
    

    相关文章

      网友评论

          本文标题:用eclipse+maven为scala编写的源程序打jar包

          本文链接:https://www.haomeiwen.com/subject/hvwfsxtx.html