java scala 混合打包_scala和java混合开发打包

如何进行scala和java混合开发打包?

首先创建maven工程,在pom.xml添加一下依赖

1.8

UTF-8

3.8.1

1.6.4

3.1

2.11.8

2.3.2

org.scala-lang

scala-library

${scala.version}

org.slf4j

slf4j-api

${slf4j-api.version}

org.slf4j

slf4j-log4j12

1.7.25

org.apache.maven.plugins

maven-compiler-plugin

3.6.1

1.7

1.7

net.alchim31.maven

scala-maven-plugin

3.2.2

org.apache.maven.plugins

maven-jar-plugin

3.0.2

true

lib/

spark.example.Main

org.apache.maven.plugins

maven-dependency-plugin

3.0.0

package

copy-dependencies

${project.build.directory}/lib

其中mainClass是最后打包的jar包的主函数,通常是包含main方法的scala类,你也可以不指定。

打包命令用mvn clean scala:compile package

打包之后在jar同目录下会有./lib子目录,包含scala-library-2.11.8.jar等依赖包都会在该目录。

如果依赖包在其他目录,也可以用命令:、

java -Djava.ext.dirs=c:\libs -jar my-snapshot.jar

来执行。其中-Djava.ext.dirs=c:\libs指定了依赖包路径为c:\libs,你可以换成自己的目录。

(1)读本地文件示例

var file = "C:\\github\\data\\sparkdata.txt"

val fileSrc = scala.io.Source.fromFile(file)

fileSrc.getLines().foreach(println)

(2)Spark示例

/**

* 打印文件内容

*/

val conf = new SparkConf().setAppName("Spark example").setMaster("local");

val sc = new SparkContext(conf);

var file = "file:///C:\\github\\data\\sparkdata.txt"

var fileRdd = sc.textFile(file, 1)

println("#len:", fileRdd.count())

控制日志级别

spark程序跑起来一堆日志,看的心烦,这里介绍简单的控制日志输出的方法

hadoop.root.logger=ERROR, console

log4j.rootLogger = ERROR, console

log4j.appender.console=org.apache.log4j.ConsoleAppender

log4j.appender.console.target=System.out

log4j.appender.console.layout=org.apache.log4j.PatternLayout

log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n

# apache

log4j.logger.org.apache.hadoop.util.Shell= off

其中log4j.logger.org.apache.hadoop.util.Shell= off是控制org.apache.hadoop.util.Shell类的日志不打印,windows下hadoop用到winutils.exe文件,找不到就会报错,但不影响跑程序,干脆关掉它的日志。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scala中可以很方便地使用Java代码,因此将ScalaJava代码混合打包是很常见的需求。这里介绍一种使用sbt进行混合打包的方法。 1. 创建sbt项目 首先需要创建一个sbt项目,并将Java代码和Scala代码分别放到src/main/java和src/main/scala目录下。 2. 配置build.sbt文件 在build.sbt文件中添加以下内容: ``` name := "your-project-name" version := "1.0" scalaVersion := "2.12.8" javacOptions ++= Seq("-source", "1.8", "-target", "1.8") unmanagedSourceDirectories in Compile += baseDirectory.value / "src" / "main" / "java" unmanagedResourceDirectories in Compile += baseDirectory.value / "src" / "main" / "resources" libraryDependencies ++= Seq( "org.scala-lang" % "scala-library" % scalaVersion.value, "com.typesafe.akka" %% "akka-actor" % "2.5.23" ) ``` 其中,unmanagedSourceDirectories指定了Java源代码的位置,unmanagedResourceDirectories指定了资源文件的位置,libraryDependencies指定了项目需要的依赖库。 3. 打包 在sbt控制台中运行以下命令即可打包: ``` sbt package ``` 打包后的jar文件位于target/scala-2.12目录下。 4. 运行 可以使用以下命令运行打包后的jar文件: ``` java -cp your-project.jar com.your.package.MainClass ``` 其中,your-project.jar是打包后的jar文件名,com.your.package.MainClass是程序入口类的全限定名。 注意:在运行需要保证依赖库已经被正确地加载。如果依赖库没有正确加载,可以使用以下命令运行: ``` java -cp your-project.jar:lib/* com.your.package.MainClass ``` 其中,lib/*表示将lib目录下的所有jar文件都加入到classpath中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值