Development Environment Setup - LS-Lab/KeYmaeraX-release GitHub Wiki
First, install all dependencies. A development environment for KeYmaera X depends on:
- The JRE
- The JDK
- Scala
- The Scala Build Tool (SBT), available here: http://www.scala-sbt.org/
- Mathematica
Second, you will need to set your JLINK_JAR_LOCATION environmental variable to the location of Mathematica's JLink.jar.
Third, if you are not using a Mac or if you installed Mathematica to a non-default location, copy default.properties to local.properties and then modify the path in local.properties
- On Linux use
mathematica.jlink.path=/usr/local/Wolfram/Mathematica/10.0/SystemFiles/Links/JLink/JLink.jaror similar. - On MacOS, use
mathematica.jlink.path=/Applications/Mathematica.app/Contents/SystemFiles/Links/JLink/JLink.jaror similar. - On Windows, use
mathematica.jlink.path=C:/Program Files/Wolfram Research/Mathematica/13.0/SystemFiles/Links/Jlink/Jlink.jaror similar.
After installing all dependencies and setting your environmental variable and local.properties, we strongly recommend installing the IntelliJ IDE and its Scala plugin.
First, install the JRE, the JDK, Scala, and the Scala Build Tool (SBT)
sudo apt-get install default-jre default-jdk scala
echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list;
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 642AC823;
sudo apt-get update;
sudo apt-get install sbt
Second, Download, install, and activate Mathematica. (CMU students, staff, and faculty may download Mathematica from CMU.)
Third, set the JLINK_JAR_LOCATION environmental variable in your .bashrc file and then source your .bashrc. To do so, add the line export JLINK_JAR_LOCATION="/usr/local/Wolfram/Mathematica/10.0/SystemFiles/Links/JLink/JLink.jar" to your .bashrc and then run . .bashrc
Fourth, create a file called local.properties and on Linux insert mathematica.jlink.path=/usr/local/Wolfram/Mathematica/10.0/SystemFiles/Links/JLink/JLink.jar or similar.
To test your installation, from the root of the repository (the directory containing build.sbt), run sbt compile
- Download and install IntelliJ
- Start IntelliJ
- On the start screen: click Plugins and install the Scala plugin (restart the IDE)
- When the start screen is visible: click File->New->Project from Existing Sources (do not use New Project from the start screen)
- Select the directory with the KeYmaeraX-release sources
- Select Import project from external model
- Select sbt from the list
- Pick any project name, e.g., KeYmaeraX-release
- Select a JDK version 1.8
- also select 1.8 in Intelli/J Settings -> Build, Execution, Deployment -> Compiler -> Scala Compile Server -> JVM -> JDK
- The setting is incorrect when errors such as
scalac: Error: java.lang.RuntimeException: /packages cannot be represented as URIoccur.
- Click Create
If you choose to use the IntelliJ IDEA development environment, install it:
- Install IntelliJ IDEA
- Install the Scala plugin for IntelliJ (the IntelliJ installer will ask you if you want to do this)
- Make sure you have defined the JLINK_JAR_LOCATION environment variable (see FAQ).
- Create a new Scala project, backed by SBT (File->New->Project... on the dialog select Scala->sbt then follow the dialog instructions)
- Select a JDK as your project SDK, add a new one if not previously added
- Check
update automatically(not checked by default), so that updates to build.sbt are reflected automatically in the project. You may also want to check the "Download and compile sources" options. - If the bundled version of sbt is not working for you, you can specify your own version here.
Create a new run configuration of type Application for the KeYmaera X Web UI.
- Main class:
edu.cmu.cs.ls.keymaerax.hydra.NonSSLBoot - Set the working directory to the project path
- Use the classpath of your project module
- Check "Single instance only"
- Make sure the JVM option
-Xss20Mis included in the run configuration.
- Right click on project folder
keymaerax-webui/src/testto mark this directory as Test Sources Root. - Make sure the JVM option
-Xss20Mis included in the run configuration. - Right click on the test folder to run all its ScalaTests.
Tagged Test Suite:
Run Configurations Drop-down in Toolbar
-> Edit Configurations
-> Add Configuration (ScalaTest)
-> Select "All in package" for Test Kind
-> Under "Test options" enter:
-n edu.cmu.cs.ls.keymaerax.tags.CheckinTest -n edu.cmu.cs.ls.keymaerax.tags.SummaryTest -l edu.cmu.cs.ls.keymaerax.tags.ObsoleteTest
(or any other string from TestTags.scala)
-> Select "keymaerax" as SDK and classpath of module
-> Apply/OK
- Run with
-Dlog4j.<level>where<level>is replaced with the desired log level (fatal,error,warn,info,debug,all)
If, at any time, you run into problems during the compilation process in IntelliJ, check the File->Project Structure->Modules->core->Dependencies to make sure the appropriate files such as SBT: unmanaged-jars are checked. This is necessary for IntelliJ to find JLink.jar. IntelliJ keeps forgetting about it, so you may have to check repeatedly. If the problems persist, do File->Invalidate Caches / Restart.
This is a known issue that occurs when trying to run sbt compile on projects with large file names on a project located in an encrypted home directory. The easiest work-around is to create a new user account that does not have an encrypted home directory, or else place your KeYmaera X project somewhere outside of your home directory.
Make sure you've set the JLINK_JAR_LOCATION environmental variable. If you have set this variable but problems persist, try logging out and logging back in to ensure that your .bashrc gets sourced.