JAVA开发 ,学一下Scala 语言很快的, 一些JAVA项目部分转SCALA,尝试了几种编译方法,遇到一些问题,不能解决,记录一下。
个人习惯用的是Eclipse , 开发Scala 可以装个Scala-IDE插件,
最新版可以直接在Eclipse Marketplace里 Install
如果选择其他版本scala , 可以在http://scala-ide.org/download/current.html 找个更新URL “Install New Software”
IDE插件中有个java to scala plugin 功能, 能方便的的JAVA 代码转成scala 代码。
安装m2eclipse-scala 插件
http://scala-ide.org/docs/tutorials/m2eclipse/
开始转化一个maven工程的JAVA项目
首先把目录结构先按maven结构规范化, scala 文件放在src/main/java 或者src/main/scala 下面,有时会编译不了,避免不必要麻烦。
1. scala-maven-plugin
一开始选择用的是这个插件,后来发现用这个太坑人。
配置
dependencies
<dependency> <groupId>org.springframework.scala</groupId> <artifactId>spring-scala_2.10</artifactId> <version>1.0.0.RC1</version> <exclusions> <exclusion> <artifactId>scala-library</artifactId> <groupId>org.scala-lang</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>2.10.3</version> </dependency>
plugins
<plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <version>3.2.0</version> <executions> <execution> <goals> <goal>compile</goal> <goal>testCompile</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration> </plugin>
看一下scala-maven对2.11还未能支持好
http://davidb.github.io/scala-maven-plugin/dependencies.html
不过2.10 算是能用, 到此还比较顺利, maven clean packge 就可以了。
换了台机器, 问题来了, 挖掘出一堆错误,
最常见错误的是 java.lang.NoClassDefFoundError: scala/reflect/internal/Trees
Eclipse ,代码,Maven 打包复制过来,maven repo 清空, 还是报错。
折腾了一晚上,未能解决。
2.Ant
参考 Scala Ant Task:http://www.scala-lang.org/old/node/98.html
<property file="version.properties" /> <property file="build.properties" /> <property name="src" location="src/main/java" /> <property name="res" location="src/main/resources" /> <property name="build" location="build" /> <property name="dist" location="dist" /> <property name="web" location="src/main/webapp" /> <target name="init_maven"> <!--使用Maven2依赖管理 --> <path id="maven-ant-tasks.classpath" path="lib/maven-ant-tasks-2.1.0.jar" /> <typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant" classpathref="maven-ant-tasks.classpath" /> <!--定义Maven2变量--> <artifact:pom id="maven.project" file="pom.xml" /> <artifact:dependencies pathId="maven.classpath" filesetid="maven.fileset.runtime" useScope="runtime"> <pom refid="maven.project" /> </artifact:dependencies> <taskdef resource="scala/tools/ant/antlib.xml"> <classpath> <pathelement location="lib/scala-compiler.jar" /> <pathelement location="lib/scala-library.jar" /> <pathelement location="lib/scala-reflect.jar" /> </classpath> </taskdef> </target> <target name="init"> <!-- Create the time stamp --> <tstamp /> <!-- Create the build directory structure used by compile --> <mkdir dir="${build}" /> <mkdir dir="${dist}" /> </target> <target name="compile" description="compile the source" depends="init_maven"> <!-- Compile the java code from ${src} into ${build} --> <javac srcdir="${src}" destdir="${build}" encoding="UTF-8" nowarn="true" source="1.6" debug="true"> <classpath refid="maven.classpath" /> </javac> <scalac srcdir="${src}" destdir="${build}" > <classpath refid="maven.classpath" /> <include name="**/*.scala" /> </scalac> </target>
3. maven-ant-plugin
ant能跑,就集成在pom文件中吧
plugins
<plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <id>scala-compile</id> <phase>prepare-package</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <property name="build.compiler" value="extJavac" /> <taskdef resource="scala/tools/ant/antlib.xml" > <classpath> <pathelement location="lib/scala-compiler.jar" /> <pathelement location="lib/scala-library.jar" /> <pathelement location="lib/scala-reflect.jar" /> </classpath> </taskdef> <scalac srcdir="src/main/java" destdir="target/classes" classpathref="maven.compile.classpath"> <include name="**/*.scala" /> </scalac> </tasks> </configuration> </execution> </executions> </plugin>
相关推荐
在Java项目中使用Scala,通常被称为Java和Scala的混编。这种混编允许开发团队在已有的Java项目中逐渐引入Scala代码,以利用其优势,同时保持与现有Java代码的兼容性。在实际应用中,可能会在服务端逻辑或者特定组件...
在Java和Scala混合编译的场景下,我们需要引入两个关键的Maven插件:`maven-compiler-plugin`用于编译Java代码,`maven-scala-plugin`用于编译Scala代码。这两个插件需要在`pom.xml`中正确配置,确保它们能够协同...
Scala是一种强大的多范式编程语言,它结合了面向对象和函数式编程的特性。MyBatis则是一款流行的Java持久层框架,主要用于简化数据库操作。在本项目中,"scala + mybatis 数据库查询",我们将探讨如何将Scala与...
这个框架的特色在于它结合了Scala和Java两种编程语言,使得开发者可以利用这两种语言的优势来构建高效、可扩展的服务。 Netty是一个高性能、异步事件驱动的网络应用框架,常用于构建高并发、低延迟的服务器。在RPC...
Scala+maven安装方法 Scala 是一种基于 Java 平台的编程语言,具有很高的扩展性和灵活性。为了方便开发者快速搭建 Scala 环境,本文将介绍 Scala+maven 的安装方法,并对 Scala IDE 的下载和配置进行详细的讲解。 ...
2. **Scala**: Scala是一种多范式的编程语言,结合了面向对象和函数式编程的特点。它运行在Java虚拟机(JVM)上,可以无缝集成Java库,因此非常适合构建复杂、高性能的分布式系统。在大数据领域,Scala由于其强大的...
基于java+scala+Python+spark实现的图书推荐系统的设计与实现+详细文档+全部资料(高分毕业设计).zip基于java+scala+Python+spark实现的图书推荐系统的设计与实现+详细文档+全部资料(高分毕业设计).zip ...
基于Java+Scala+Spark的图书推荐系统源码+详细文档+全部数据资料 高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的...
赠送jar包:scala-java8-compat_2.11-0.7.0.jar; 赠送原API文档:scala-java8-compat_2.11-0.7.0-javadoc.jar; 赠送源代码:scala-java8-compat_2.11-0.7.0-sources.jar; 赠送Maven依赖信息文件:scala-java8-...
赠送jar包:scala-java8-compat_2.11-0.7.0.jar; 赠送原API文档:scala-java8-compat_2.11-0.7.0-javadoc.jar; 赠送源代码:scala-java8-compat_2.11-0.7.0-sources.jar; 赠送Maven依赖信息文件:scala-java8-...
### sbt + Scala + IDEA 安装配置及创建导入 sbt 项目的详细步骤 #### 一、环境搭建 本文档将详细介绍如何在 Windows 10 和 JDK 1.8 的环境下,搭建完整的 Scala + sbt + IntelliJ IDEA 开发环境。这对于初学者来...
在本压缩包中,我们关注的是Java、Hadoop、Scala和Spark这四个技术在Windows 10环境下的配置。这些工具广泛应用于大数据处理和分析领域,尤其是Spark在现代数据科学中扮演了重要角色。让我们逐一深入理解这些技术...
项目包含95个文件,主要使用Scala和Java编程语言。文件类型包括80个Scala源代码文件、4个XML配置文件、3个TXT文档、2个Markdown文档、2个Java源代码文件、1个GIT忽略文件、1个日志文件、1个JSON配置文件和1个...
##Gradle+Scala+Java+SpringMVC Web应用解决方案 ###框架组成(Project Architecture) Gradle > > finished > 2016-10-23 Gretty Integration> Server Hot Deploy Scheme> > finished > 2016-11-05 Spring 4.25 ...
在本项目中,"springboot+scala+react"的组合为我们提供了一个现代Web应用程序的开发框架,结合了Spring Boot的强大后端能力、Scala的高效编程语法以及React的前端交互优势。下面将详细介绍这三个关键技术及其在项目...
本项目涉及的核心知识点包括Spark Core、Spark SQL和Spark Streaming,同时结合了Scala和Java编程语言,以及Maven构建工具,实现了混合框架的搭建。下面将详细阐述这些关键点。 1. **Spark Core**:作为Spark的基础...
【play2+scala+mongodb demo示例】是一个用于学习如何集成和使用Play Framework 2、Scala编程语言以及MongoDB数据库的实战项目。这个项目旨在帮助初学者理解这三者之间的协同工作,通过创建一个基本的CRUD(创建、...
hadoop+scala+spakr配置,步骤详细,值得收藏。
在Maven项目中,Java可以轻松地调用Scala编译后的字节码,因为它们都是Java虚拟机(JVM)上的语言。 最后,为了将项目打包成可执行的jar文件,我们需要在`pom.xml`中添加`maven-jar-plugin`并配置`mainClass`属性:...