Docker容器嵌入式开发:在Ubuntu上配置Scala开发环境与项目运行

一、环境配置

在Ubuntu上配置Scala开发环境相对简单。以下是配置步骤:

安装Java开发工具包(JDK):

打开终端,并运行以下命令安装默认的OpenJDK:

sudo apt update
sudo apt install default-jdk

安装完成后,您可以通过运行以下命令来验证Java是否正确安装:

java -version

下载和安装Scala:

在终端中运行以下命令下载和安装Scala:

sudo apt install scala
安装完成后,您可以通过运行以下命令来验证Scala是否正确安装:

scala -version

验证Scala和开发工具:

打开终端,运行Scala REPL(Read-Eval-Print Loop)来验证Scala是否可以正常工作:

scala

然后尝试输入一些Scala代码,并查看是否有正确的输出。
完成上述步骤后,您的Ubuntu系统就已经配置好了Scala开发环境。您可以开始编写和运行Scala代码了。

操作记录:

sudo apt update
Get:1 file:/var/nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.3.4-ga-20210226  InRelease
Ign:1 file:/var/nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.3.4-ga-20210226  InRelease
Get:2 file:/var/nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.3.4-ga-20210226  Release [569 B]
Get:2 file:/var/nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.3.4-ga-20210226  Release [569 B]
Hit:4 http://archive.ubuntu.com/ubuntu bionic InRelease                                                                           
Hit:5 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu bionic InRelease                                                                                       
Hit:6 http://security.ubuntu.com/ubuntu bionic-security InRelease                                                                                           
Hit:8 http://archive.ubuntu.com/ubuntu bionic-updates InRelease                                                                                
Hit:9 http://ppa.launchpad.net/ethereum/ethereum/ubuntu bionic InRelease                                                                       
Hit:11 http://archive.ubuntu.com/ubuntu bionic-backports InRelease                                                                                                                            
Hit:12 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic InRelease                                                                                                               
Hit:7 https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu1804/x86_64  InRelease                                                                                                    
Ign:10 https://developer.download.nvidia.cn/compute/machine-learning/repos/ubuntu1804/x86_64  InRelease                                             
Hit:14 https://dl.yarnpkg.com/debian stable InRelease                                                                  
Hit:13 https://developer.download.nvidia.cn/compute/machine-learning/repos/ubuntu1804/x86_64  Release
Hit:16 https://apt.llvm.org/xenial llvm-toolchain-xenial-8 InRelease                                
Err:17 http://dist.carla.org/carla bionic InRelease                                                                                                                                           
  Could not connect to dist.carla.org:80 (34.227.255.250), connection timed out
Reading package lists... Done                     
Building dependency tree       
Reading state information... Done
99 packages can be upgraded. Run 'apt list --upgradable' to see them.
W: Failed to fetch http://dist.carla.org/carla/dists/bionic/InRelease  Could not connect to dist.carla.org:80 (34.227.255.250), connection timed out
W: Some index files failed to download. They have been ignored, or old ones used instead.
(tfv1) root@98031e181845:/data/myapp2024/myBigDataApplicationDevelopment# sudo apt install default-jdk
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  gyp libjs-async libjs-inherits libjs-node-uuid libjs-underscore libuv1-dev node-abbrev node-ansi node-ansi-color-table node-archy node-async node-balanced-match node-block-stream
  node-brace-expansion node-builtin-modules node-combined-stream node-concat-map node-cookie-jar node-delayed-stream node-forever-agent node-form-data node-fs.realpath node-fstream
  node-fstream-ignore node-github-url-from-git node-glob node-graceful-fs node-hosted-git-info node-inflight node-inherits node-ini node-is-builtin-module node-isexe
  node-json-stringify-safe node-lockfile node-lru-cache node-mime node-minimatch node-mkdirp node-mute-stream node-node-uuid node-nopt node-normalize-package-data node-npmlog node-once
  node-osenv node-path-is-absolute node-pseudomap node-qs node-read node-read-package-json node-request node-retry node-rimraf node-semver node-sha node-slide node-spdx-correct
  node-spdx-expression-parse node-spdx-license-ids node-tar node-tunnel-agent node-underscore node-validate-npm-package-license node-which node-wrappy node-yallist
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  default-jdk-headless default-jre default-jre-headless openjdk-11-jdk openjdk-11-jdk-headless openjdk-11-jre openjdk-11-jre-headless
Suggested packages:
  openjdk-11-demo openjdk-11-source visualvm fonts-ipafont-gothic fonts-ipafont-mincho fonts-wqy-microhei | fonts-wqy-zenhei fonts-indic
The following NEW packages will be installed:
  default-jdk default-jdk-headless default-jre default-jre-headless openjdk-11-jdk openjdk-11-jdk-headless openjdk-11-jre openjdk-11-jre-headless
0 upgraded, 8 newly installed, 0 to remove and 99 not upgraded.
Need to get 113 MB of archives.
After this operation, 259 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 openjdk-11-jre-headless amd64 11.0.19+7~us1-0ubuntu1~18.04.1 [38.1 MB]
Get:2 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 default-jre-headless amd64 2:1.11-68ubuntu1~18.04.1 [10.9 kB]                                                                
Get:3 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 openjdk-11-jre amd64 11.0.19+7~us1-0ubuntu1~18.04.1 [192 kB]                                                                 
Get:4 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 default-jre amd64 2:1.11-68ubuntu1~18.04.1 [1,076 B]                                                                         
Get:5 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 openjdk-11-jdk-headless amd64 11.0.19+7~us1-0ubuntu1~18.04.1 [73.5 MB]                                                       
Get:6 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 default-jdk-headless amd64 2:1.11-68ubuntu1~18.04.1 [1,132 B]                                                                
Get:7 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 openjdk-11-jdk amd64 11.0.19+7~us1-0ubuntu1~18.04.1 [1,331 kB]                                                               
Get:8 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 default-jdk amd64 2:1.11-68ubuntu1~18.04.1 [1,092 B]                                                                         
Fetched 113 MB in 18s (6,448 kB/s)                                                                                                                                                            
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package openjdk-11-jre-headless:amd64.
(Reading database ... 126294 files and directories currently installed.)
Preparing to unpack .../0-openjdk-11-jre-headless_11.0.19+7~us1-0ubuntu1~18.04.1_amd64.deb ...
Unpacking openjdk-11-jre-headless:amd64 (11.0.19+7~us1-0ubuntu1~18.04.1) ...
Selecting previously unselected package default-jre-headless.
Preparing to unpack .../1-default-jre-headless_2%3a1.11-68ubuntu1~18.04.1_amd64.deb ...
Unpacking default-jre-headless (2:1.11-68ubuntu1~18.04.1) ...
Selecting previously unselected package openjdk-11-jre:amd64.
Preparing to unpack .../2-openjdk-11-jre_11.0.19+7~us1-0ubuntu1~18.04.1_amd64.deb ...
Unpacking openjdk-11-jre:amd64 (11.0.19+7~us1-0ubuntu1~18.04.1) ...
Selecting previously unselected package default-jre.
Preparing to unpack .../3-default-jre_2%3a1.11-68ubuntu1~18.04.1_amd64.deb ...
Unpacking default-jre (2:1.11-68ubuntu1~18.04.1) ...
Selecting previously unselected package openjdk-11-jdk-headless:amd64.
Preparing to unpack .../4-openjdk-11-jdk-headless_11.0.19+7~us1-0ubuntu1~18.04.1_amd64.deb ...
Unpacking openjdk-11-jdk-headless:amd64 (11.0.19+7~us1-0ubuntu1~18.04.1) ...
Selecting previously unselected package default-jdk-headless.
Preparing to unpack .../5-default-jdk-headless_2%3a1.11-68ubuntu1~18.04.1_amd64.deb ...
Unpacking default-jdk-headless (2:1.11-68ubuntu1~18.04.1) ...
Selecting previously unselected package openjdk-11-jdk:amd64.
Preparing to unpack .../6-openjdk-11-jdk_11.0.19+7~us1-0ubuntu1~18.04.1_amd64.deb ...
Unpacking openjdk-11-jdk:amd64 (11.0.19+7~us1-0ubuntu1~18.04.1) ...
Selecting previously unselected package default-jdk.
Preparing to unpack .../7-default-jdk_2%3a1.11-68ubuntu1~18.04.1_amd64.deb ...
Unpacking default-jdk (2:1.11-68ubuntu1~18.04.1) ...
Setting up openjdk-11-jre-headless:amd64 (11.0.19+7~us1-0ubuntu1~18.04.1) ...
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/java to provide /usr/bin/java (java) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jjs to provide /usr/bin/jjs (jjs) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/keytool to provide /usr/bin/keytool (keytool) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/rmid to provide /usr/bin/rmid (rmid) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/rmiregistry to provide /usr/bin/rmiregistry (rmiregistry) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/pack200 to provide /usr/bin/pack200 (pack200) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/unpack200 to provide /usr/bin/unpack200 (unpack200) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode
update-binfmts: warning: current package is openjdk-11, but binary format already installed by openjdk-8
Setting up openjdk-11-jdk-headless:amd64 (11.0.19+7~us1-0ubuntu1~18.04.1) ...
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jar to provide /usr/bin/jar (jar) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jarsigner to provide /usr/bin/jarsigner (jarsigner) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/javac to provide /usr/bin/javac (javac) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/javadoc to provide /usr/bin/javadoc (javadoc) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/javap to provide /usr/bin/javap (javap) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jcmd to provide /usr/bin/jcmd (jcmd) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jdb to provide /usr/bin/jdb (jdb) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jdeprscan to provide /usr/bin/jdeprscan (jdeprscan) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jdeps to provide /usr/bin/jdeps (jdeps) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jfr to provide /usr/bin/jfr (jfr) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jimage to provide /usr/bin/jimage (jimage) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jinfo to provide /usr/bin/jinfo (jinfo) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jlink to provide /usr/bin/jlink (jlink) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jmap to provide /usr/bin/jmap (jmap) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jmod to provide /usr/bin/jmod (jmod) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jps to provide /usr/bin/jps (jps) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jrunscript to provide /usr/bin/jrunscript (jrunscript) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jshell to provide /usr/bin/jshell (jshell) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jstack to provide /usr/bin/jstack (jstack) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jstat to provide /usr/bin/jstat (jstat) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jstatd to provide /usr/bin/jstatd (jstatd) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/rmic to provide /usr/bin/rmic (rmic) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/serialver to provide /usr/bin/serialver (serialver) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jaotc to provide /usr/bin/jaotc (jaotc) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jhsdb to provide /usr/bin/jhsdb (jhsdb) in auto mode
Setting up default-jre-headless (2:1.11-68ubuntu1~18.04.1) ...
Setting up default-jdk-headless (2:1.11-68ubuntu1~18.04.1) ...
Setting up openjdk-11-jre:amd64 (11.0.19+7~us1-0ubuntu1~18.04.1) ...
Setting up default-jre (2:1.11-68ubuntu1~18.04.1) ...
Setting up openjdk-11-jdk:amd64 (11.0.19+7~us1-0ubuntu1~18.04.1) ...
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jconsole to provide /usr/bin/jconsole (jconsole) in auto mode
Setting up default-jdk (2:1.11-68ubuntu1~18.04.1) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Processing triggers for mime-support (3.60ubuntu1) ...
(tfv1) root@98031e181845:/data/myapp2024/myBigDataApplicationDevelopment# java -version
openjdk version "11.0.19" 2023-04-18
OpenJDK Runtime Environment (build 11.0.19+7-post-Ubuntu-0ubuntu118.04.1)
OpenJDK 64-Bit Server VM (build 11.0.19+7-post-Ubuntu-0ubuntu118.04.1, mixed mode, sharing)
(tfv1) root@98031e181845:/data/myapp2024/myBigDataApplicationDevelopment# sudo apt install scala
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  gyp libjs-async libjs-inherits libjs-node-uuid libjs-underscore libuv1-dev node-abbrev node-ansi node-ansi-color-table node-archy node-async node-balanced-match node-block-stream
  node-brace-expansion node-builtin-modules node-combined-stream node-concat-map node-cookie-jar node-delayed-stream node-forever-agent node-form-data node-fs.realpath node-fstream
  node-fstream-ignore node-github-url-from-git node-glob node-graceful-fs node-hosted-git-info node-inflight node-inherits node-ini node-is-builtin-module node-isexe
  node-json-stringify-safe node-lockfile node-lru-cache node-mime node-minimatch node-mkdirp node-mute-stream node-node-uuid node-nopt node-normalize-package-data node-npmlog node-once
  node-osenv node-path-is-absolute node-pseudomap node-qs node-read node-read-package-json node-request node-retry node-rimraf node-semver node-sha node-slide node-spdx-correct
  node-spdx-expression-parse node-spdx-license-ids node-tar node-tunnel-agent node-underscore node-validate-npm-package-license node-which node-wrappy node-yallist
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  libhawtjni-runtime-java libjansi-java libjansi-native-java libjline2-java scala-library scala-parser-combinators scala-xml
Suggested packages:
  scala-doc
The following NEW packages will be installed:
  libhawtjni-runtime-java libjansi-java libjansi-native-java libjline2-java scala scala-library scala-parser-combinators scala-xml
0 upgraded, 8 newly installed, 0 to remove and 99 not upgraded.
Need to get 25.0 MB of archives.
After this operation, 28.6 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libhawtjni-runtime-java all 1.15-2 [27.1 kB]
Get:2 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libjansi-native-java all 1.7-1 [19.4 kB]
Get:3 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libjansi-java all 1.16-1 [36.2 kB]
Get:4 http://archive.ubuntu.com/ubuntu bionic/universe amd64 libjline2-java all 2.14.6-1 [150 kB]
Get:5 http://archive.ubuntu.com/ubuntu bionic-updates/universe amd64 scala-library all 2.11.12-4~18.04 [9,589 kB]
Get:6 http://archive.ubuntu.com/ubuntu bionic/universe amd64 scala-parser-combinators all 1.0.3-3 [355 kB]
Get:7 http://archive.ubuntu.com/ubuntu bionic/universe amd64 scala-xml all 1.0.3-3 [601 kB]
Get:8 http://archive.ubuntu.com/ubuntu bionic-updates/universe amd64 scala all 2.11.12-4~18.04 [14.2 MB]
Fetched 25.0 MB in 6s (4,477 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package libhawtjni-runtime-java.
(Reading database ... 126808 files and directories currently installed.)
Preparing to unpack .../0-libhawtjni-runtime-java_1.15-2_all.deb ...
Unpacking libhawtjni-runtime-java (1.15-2) ...
Selecting previously unselected package libjansi-native-java.
Preparing to unpack .../1-libjansi-native-java_1.7-1_all.deb ...
Unpacking libjansi-native-java (1.7-1) ...
Selecting previously unselected package libjansi-java.
Preparing to unpack .../2-libjansi-java_1.16-1_all.deb ...
Unpacking libjansi-java (1.16-1) ...
Selecting previously unselected package libjline2-java.
Preparing to unpack .../3-libjline2-java_2.14.6-1_all.deb ...
Unpacking libjline2-java (2.14.6-1) ...
Selecting previously unselected package scala-library.
Preparing to unpack .../4-scala-library_2.11.12-4~18.04_all.deb ...
Unpacking scala-library (2.11.12-4~18.04) ...
Selecting previously unselected package scala-parser-combinators.
Preparing to unpack .../5-scala-parser-combinators_1.0.3-3_all.deb ...
Unpacking scala-parser-combinators (1.0.3-3) ...
Selecting previously unselected package scala-xml.
Preparing to unpack .../6-scala-xml_1.0.3-3_all.deb ...
Unpacking scala-xml (1.0.3-3) ...
Selecting previously unselected package scala.
Preparing to unpack .../7-scala_2.11.12-4~18.04_all.deb ...
Unpacking scala (2.11.12-4~18.04) ...
Setting up scala-parser-combinators (1.0.3-3) ...
Setting up libhawtjni-runtime-java (1.15-2) ...
Setting up scala-library (2.11.12-4~18.04) ...
Setting up scala-xml (1.0.3-3) ...
Setting up libjansi-native-java (1.7-1) ...
Setting up libjansi-java (1.16-1) ...
Setting up libjline2-java (2.14.6-1) ...
Setting up scala (2.11.12-4~18.04) ...
update-alternatives: using /usr/share/scala-2.11/bin/scala to provide /usr/bin/scala (scala) in auto mode
(tfv1) root@98031e181845:/data/myapp2024/myBigDataApplicationDevelopment# scala -version
Scala code runner version 2.11.12 -- Copyright 2002-2017, LAMP/EPFL
(tfv1) root@98031e181845:/data/myapp2024/myBigDataApplicationDevelopment# sudo apt install sbt
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package sbt
(tfv1) root@98031e181845:/data/myapp2024/myBigDataApplicationDevelopment# echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
deb https://dl.bintray.com/sbt/debian /
(tfv1) root@98031e181845:/data/myapp2024/myBigDataApplicationDevelopment# LS
bash: LS: command not found
(tfv1) root@98031e181845:/data/myapp2024/myBigDataApplicationDevelopment# ls
(tfv1) root@98031e181845:/data/myapp2024/myBigDataApplicationDevelopment# sudo apt update
Get:1 file:/var/nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.3.4-ga-20210226  InRelease
Ign:1 file:/var/nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.3.4-ga-20210226  InRelease
Get:2 file:/var/nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.3.4-ga-20210226  Release [569 B]
Get:2 file:/var/nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.3.4-ga-20210226  Release [569 B]
Hit:6 http://archive.ubuntu.com/ubuntu bionic InRelease                                                                                                                                       
Hit:8 http://security.ubuntu.com/ubuntu bionic-security InRelease                                                                                                                            
Hit:9 http://archive.ubuntu.com/ubuntu bionic-updates InRelease                                                                              
Hit:10 https://dl.yarnpkg.com/debian stable InRelease                                                                                                                                         
Hit:5 https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu1804/x86_64  InRelease                                                                                                    
Hit:11 http://archive.ubuntu.com/ubuntu bionic-backports InRelease                                                                                                                            
Hit:12 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu bionic InRelease                                                                                                                        
Ign:7 https://developer.download.nvidia.cn/compute/machine-learning/repos/ubuntu1804/x86_64  InRelease                                                                                        
Hit:13 https://developer.download.nvidia.cn/compute/machine-learning/repos/ubuntu1804/x86_64  Release                                                                                  
Hit:14 http://ppa.launchpad.net/ethereum/ethereum/ubuntu bionic InRelease                                                                                        
Hit:4 https://apt.llvm.org/xenial llvm-toolchain-xenial-8 InRelease                                                                             
Ign:16 https://dl.bintray.com/sbt/debian  InRelease                                                                      
Hit:17 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic InRelease                                          
Err:18 https://dl.bintray.com/sbt/debian  Release                                                   
  404  Not Found [IP: 3.95.117.170 443]
Err:19 http://dist.carla.org/carla bionic InRelease                                                                                                                                           
  Could not connect to dist.carla.org:80 (34.227.255.250), connection timed out
Reading package lists... Done                     
E: The repository 'https://dl.bintray.com/sbt/debian  Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
(tfv1) root@98031e181845:/data/myapp2024/myBigDataApplicationDevelopment# scala
Welcome to Scala 2.11.12 (OpenJDK 64-Bit Server VM, Java 11.0.19).
Type in expressions for evaluation. Or try :help.

scala> ls


二、项目运行

要运行简单的Scala代码,您可以按照以下步骤:

编写Scala代码:

使用您喜欢的文本编辑器创建一个新的.scala文件,并编写您的Scala代码。例如,您可以创建一个名为HelloWorld.scala的文件,并在其中编写以下代码:


object HelloWorld {
    def main(args: Array[String]): Unit = {
        println("Hello, world!")
    }
}

保存代码文件:

将编写的Scala代码保存到您选择的目录中,确保文件扩展名为.scala。
打开终端:

打开终端应用程序(Terminal)。
进入代码文件所在的目录:

使用cd命令进入保存Scala代码文件的目录。例如:

cd /path/to/your/scala/code

编译Scala代码:

在终端中运行以下命令来编译您的Scala代码:

scalac HelloWorld.scala

这将生成一个名为HelloWorld.class的Java字节码文件。

运行Scala代码:

编译成功后,您可以在终端中运行以下命令来执行编译后的Scala程序:

scala HelloWorld

您应该会在终端中看到输出Hello, world!。

这样,您就成功地编写并运行了简单的Scala代码。您可以根据需要修改和扩展这些步骤来处理更复杂的Scala程序。

三、矩阵运算

以下是一个简单的Scala代码示例,用于执行数学矩阵计算:

object MatrixCalculation {
  def main(args: Array[String]): Unit = {
    // 定义两个矩阵
    val matrix1 = Array.ofDim[Double](2, 2)
    val matrix2 = Array.ofDim[Double](2, 2)

    // 初始化矩阵1
    matrix1(0)(0) = 1.0
    matrix1(0)(1) = 2.0
    matrix1(1)(0) = 3.0
    matrix1(1)(1) = 4.0

    // 初始化矩阵2
    matrix2(0)(0) = 5.0
    matrix2(0)(1) = 6.0
    matrix2(1)(0) = 7.0
    matrix2(1)(1) = 8.0

    // 矩阵相加
    val resultMatrix = addMatrices(matrix1, matrix2)

    // 打印结果矩阵
    println("结果矩阵:")
    for (row <- resultMatrix) {
      for (element <- row) {
        print(element + " ")
      }
      println()
    }
  }

  // 矩阵相加函数
  def addMatrices(matrix1: Array[Array[Double]], matrix2: Array[Array[Double]]): Array[Array[Double]] = {
    val numRows = matrix1.length
    val numCols = matrix1(0).length
    val resultMatrix = Array.ofDim[Double](numRows, numCols)

    for (i <- 0 until numRows) {
      for (j <- 0 until numCols) {
        resultMatrix(i)(j) = matrix1(i)(j) + matrix2(i)(j)
      }
    }

    resultMatrix
  }
}

这段代码创建了两个2x2的矩阵,并定义了一个函数用于将这两个矩阵相加。然后,在主函数中调用这个函数,将两个矩阵相加,并打印结果矩阵。

您可以根据需要修改矩阵的大小和元素值,或者编写其他数学矩阵计算函数来扩展这个示例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

源代码杀手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值