Using the Visual Studio Code editor
Visual Studio Code is an open-source, cross-platform text editor. Scala is supported via an official plugin. This is a short guide for installing and using Visual Studio Code (VS Code) for working on programming assignments in the course.
(The exercises should work well with other IDE’s or build systems that support sbt builds, such as IntelliJ, so you are free to use your own set-up if you like, although the course staff might not be able to help you with it.)
On Aalto Linux computers
VS Code is accessible as a software module on the Aalto workstations found in the computer labs (or on a virtual desktop using Aalto VDI),
To start Code on an Aalto Linux workstation do the following:
Open a terminal
(On VDI remote desktops only) Authenticate to make vscode (and other) software module available:
Load the vscode module by the command:
module load vscode/a1120
Start VS Code by the command:
Do not forget the
/a1120 part of the module name. It denotes the version of VS Code used in this course, and contains tweaks to make the Scala plugins work better on VDI. If you simply load
vscode then you will have the vanilla version. (If you happen to load the default version, you can unload it with the command
module unload vscode).
The VS Code editor should now open, and you are ready to start working. If this is the first time you start VS Code for the course, make sure to also do the steps under `Setup`_ below to install Metals and properly configure Code.
When working on Aalto Linux computers do not place the assignment projects under any of the ‘standard’ folders Desktop, Downloads, or Documents (or any other linked folder)! Due to an open issue, compilation messages and errors are not handled correctly. Instead, your projects under a sub-directory you have created in your home directory.
Installation on personal computer
If you would like to use your own computer to work on the exercises you need to install VS Code, Java, and sbt:
First things first
Install JDK 11
Windows 10: download and run Java 11 installer at AdoptOpenJDK.net
MacOs: download and run Java 11 installer at Azul
Note: Make sure to select the ARM 64-bit version if you have a newer Mac with an M-chip.
You can also use the software development kit manager sdkman to install java:
Follow instructions to install sdkman,
sdk install java 11.0.14-zulu. (sdk can then also be used to install sbt, see below.)
Ubuntu Linux: install package openjdk-11-jdk
Other Linux distributions: consult your package manager
(Note: sbt is needed to open a scala console, Code + Metals will usually work without it)
MacOS: instructions Note: several options are given for Mac OS in the link above, the most straight forward is probably to install a package manager, such as sdkman, first if you are OK with that. Then you can do the following:
Follow instructions to install sdkman, (unless you already have it)
sdk install sbtin your terminal to install sbt.
Windows 10: download and run the msi installer
Download the .zip file from https://code.visualstudio.com/ and extract it
Optional: move the now decompressed VS Code application into the Applications folder
Ubuntu: Install “Visual Studio Code” in “Ubuntu Software”
Debian-based distributions (Debian, Ubuntu, etc.): Download the .deb file and run the installer
Windows 10 & 11
Download the installer from https://code.visualstudio.com/ and run it.
Run the VS Code application, select the extensions tab on the left-hand side, or in the menu View → Extensions
In the search field, search for “metals”, choose Scala (Metals), and hit install. This will install the Metals language server which adds IDE-like features such as code actions, completion, and syntax and error highlighting, among other things that make the development process concise and convenient.
Scala (Metals) is incompatible with the VS Code extensions Scala (sbt) and Scala Language Server. Under Windows 10 it may also conflict with the WSL extension. If you have used VS Code previously and have any of these extensions installed, make sure to uninstall or disable them for the assignment workspaces.
Download an exercise sbt source package from A+ and extract an assignment directory
If you are using VS Code on an Aalto Workstation do not place the assignment projects under any of the “standard” folders
Documents (or any other linked folder). Due to an open issue, compilation errors are not handled correctly. Instead, place them under some sub-directory you have created in your home directory.
Navigate to the menu bar, proceed with File → Open Folder…, and select the extracted sbt assignment folder
Recent versions of VS Code will show a dialogue asking if you trust the project. You should select Yes, I trust the authors to be able to build and debug the exercise. (If you pick the No option by mistake you can change it later.) If you organise a separate course folder (as you should!) for A1120, tick the box Trust the authors of all files in the parent folder… to prevent this popup every time you import a new exercise.
If this is the first time you open a Scala project VS Code may download and install Metal extension components at this point. This may take a minute or two.
Next, VS Code will detect the assignment workspace and ask what you want to do with it. Choose Import build, and wait while the assignment is set up; progress is displayed in the blue status bar located at the bottom of the window. (If the pop up disappears, do not worry, you can get it back by clicking on the little ‘bell’ icon furthest to the right in the same blue status bar.)
If you do not get prompted to Import the project, make sure you have opened the correct folder or VS Code will not import it as a Scala project. (It needs to be the assignment folder containing the
build.sbt file, and the
src directories.) If this has happened, just close the current folder from the File menu and open the right one.
Read the provided program code and documentation
Develop your solution. The places you should insert your code are usually marked with
Some syntax errors will be shown as you type, and the build server will compile your code every time it is saved, so save often
Compilation errors are indicated in the status bar, in the program code, and the explorer. The full error messages are displayed in the problems tab: View → Problems
Run tests by opening the corresponding .scala file in the test folder and click on the green ‘play’ ( ▶ ) symbol to the left of the class name. Output will appear in the Debug Console (should appear automatically, otherwise go to View → Debug Console). Note: The test/run links will only appear if your program compiles, so make sure that your code is error-free and saved before testing it.
Always run the provided unit tests and check if they pass
When you are happy with your solution, submit the required .scala files to A+ for grading (you can drag-n-drop the files from your system’s file manager/explorer in modern browsers; you can also open a system file manager from Code by right-clicking on a file tab and selecting Open containing folder).
Scala not found
This error happens if you have the Code Runner plugin installed in your workspace. Disable it for the current project and runt code and tests through Metals (see basic tasks for more information about ow to run tests and main programs with Metals).
Error message: build server not started
Can happen if the wrong, or multiple versions of Java is installed
Make sure JDK 11 was properly installed
In the extensions tab select the cogwheel for Scala (Metals) and open the settings. Find the Metals: Java Home field and fill in the path to the JDK 11 (in windows use explorer, then right-click in the address-bar and select copy-as-text, then paste this value into the field).
If you have either of the VS Code extensions Scala (sbt) or Scala Language Server, uninstall or disable that extension.
A defunct build server process is left on your system
This could be the case if the build process works initially, but then crashes. In this case it is worth trying to terminate the process and restart VS Code:
Shut down Code, then
(MacOS/Ubuntu) open a terminal and run
pkill javato terminate all java processes
(Windows) open the task manager and terminate any java processes
Restart Code. This should create a new build-server process.
(Windows, if you have a user name containing ‘special’ characters [such as ä and ö])
Sadly, paths are still not always handled properly, and some with non-ASCII characters in their usernames have reported problems under Windows. You can try to circumvent the problem by moving the project to a directory path not including your user-name. However, the more reliable fix seems to be to create a new user to specifically for course-work (using only ASCII characters); then, completely log out of your ‘real’ account (do not simply switch accounts) and use the new one while working on the assignments.
(Windows) Disable WSL for project
If you have previously used Code for other courses or projects, you may have the WSL (Windows Subsystem for Linux) extension installed. This extension can interfere with Scala (Metals). The solution is to disable the WSL extension for your Scala projects (Extensions, WSL, click the drop-down menu at Disable and select Disable (Workspace), then restart Code.)
sbt command not found
If you have started VS Code before installing sbt you need to either restart Code or open a new terminal as a terminal is not aware of programs installed after it was opened.
(Windows) You may have to add the sbt directory to your system PATH. See e.g. instructions in this post.
Error: code: No such file or directory (Aalto Linux workstation)
If you get an error message saying
code: No such file or directorywhen trying to run
code, then you may have forgotten to load the module properly.
A successful call to
module load vscode/a1120will print nothing. If you get an error message here, check that you have typed the command correctly.
If you want to check that the module is loaded you can give the command
Error: the following module(s) are unknown (Aalto Linux workstation)
You have probably forgotten to run kinit (if using a remote desktop).
You need to run
kinitand load the
vscode/a1120module every time you log in to the VDI workstation
If you get an error message saying
Lmod has detected the following error: The following module(s) are unknown: "vscode/a1120"you may have forgotten to run
kinit is part of the kerberos suite, a protocol for authentication of network resources. It will ask for your Aalto password in order to provide the extra software modules of which VS Code is a part. In the Aalto computer labs this is done automatically when you log in, but if you connect to a virtual machine you have to do it yourself. This is current Aalto IT policy, however in general, always think twice when somebody asks you to execute a program which asks for your password.