Scalive alternatives and similar packages
Based on the "Testing" category.
Alternatively, view Scalive alternatives based on common mentions on social networks and blogs.
Gatling9.8 9.7 Scalive VS GatlingModern Load Testing as Code
FS29.3 9.6 Scalive VS FS2Compositional, streaming I/O library for Scala
ScalaCheck9.1 7.6 Scalive VS ScalaCheckProperty-based testing for Scala
ScalaTest8.6 7.3 Scalive VS ScalaTestA testing tool for Scala and Java developers
dotenv-linter8.6 7.2 Scalive VS dotenv-linter⚡️Lightning-fast linter for .env files. Written in Rust 🦀
Diffy7.9 1.0 Scalive VS DiffyFind potential bugs in your services with Diffy
Specs27.8 7.5 Scalive VS Specs2Software Specifications for Scala
ScalaMeter6.6 0.0 Scalive VS ScalaMeterMicrobenchmarking and performance regression testing framework for the JVM platform.
ScalaMock6.5 6.0 Scalive VS ScalaMockNative Scala mocking framework
µTest6.4 6.2 Scalive VS µTestA simple testing framework for Scala
MUnit6.0 8.9 Scalive VS MUnitScala testing library with actionable errors and extensible APIs
Mockito Scala5.7 5.8 Scalive VS Mockito ScalaMockito for Scala language
scalaprops5.1 7.2 Scalive VS scalapropsproperty based testing library for Scala
cornichon4.9 9.5 Scalive VS cornichonScala DSL for testing HTTP JSON API
Minitest4.5 0.0 Scalive VS MinitestThe super light testing library for Scala and Scala.js
Stryker4s4.4 8.8 Scalive VS Stryker4sMutation testing for Scala
Nyaya4.2 0.0 Scalive VS NyayaRandom Data Generation and/or Property Testing in Scala & Scala.JS.
LambdaTest3.8 0.6 Scalive VS LambdaTestFunctional testing for Scala.
Scala Test-State3.7 6.1 Scalive VS Scala Test-StateScala Test-State.
Testcontainers-scala2.7 0.0 Scalive VS Testcontainers-scalaThe project repository has moved to https://github.com/testcontainers/testcontainers-scala
databob0.9 0.0 Scalive VS databobRandomised, zero-boilerplate object builders
Access the most powerful time series database as a service
Do you think we are missing an alternative of Scalive or a related project?
This tool allows you to connect a Scala REPL console to running Oracle (Sun) JVM processes without any prior setup at the target process.
For Scala 2.12, download scalive-1.7.0.zip.
For Scala 2.10 and 2.11, download scalive-1.6.zip.
Extract the ZIP file, you will see:
scalive-1.7.0/ scalive scalive.bat scalive-1.7.0.jar scala-library-2.12.8.jar scala-compiler-2.12.8.jar scala-reflect-2.12.8.jar
scala-library, scala-compiler, and scala-reflect of the correct version that your JVM process is using will be loaded, if they have not been loaded yet. The REPL console needs these libraries to work.
For example, your process has already loaded scala-library 2.12.8 by itself, but scala-compiler and scala-reflect haven't been loaded, Scalive will automatically load their version 2.12.8.
If none of them has been loaded, i.e. your process doesn't use Scala, Scalive will load the lastest version in the directory.
For your convenience, Scala 2.12.8 JAR files have been included above.
If your process uses a different Scala version, you need to manually download the corresponding JARs from the Internet and save them in the same directory as above.
Run the shell script
scalive (*nix) or
Run without argument to see the list of running JVM process IDs on your local machine:
JVM processes: #pid Display name 13821 demos.Boot 17978 quickstart.Boot
To connect a Scala REPL console to a process:
scalive <process id listed above>
Just like in normal Scala REPL console, you can:
- Use up/down arrows keys to navigate the console history
- Use tab key for completion
How to load your own JARs to the process
Scalive only automatically loads
scalive.jar to the system classpath.
If you want to load additional classes in other JARs, first run these in the REPL console to load the JAR to the system class loader:
val cl = ClassLoader.getSystemClassLoader.asInstanceOf[java.net.URLClassLoader] val jarSearchDirs = Array("/dir/containing/the/jar") val jarPrefix = "mylib" // Will match "mylib-xxx.jar", convenient when there's version number in the file name scalive.Classpath.findAndAddJar(cl, jarSearchDirs, jarPrefix)
Now the trick is just quit the REPL console and connect it to the target process again. You will be able to use your classes in the JAR normally:
import mylib.foo.Bar ...
How Scalive works
Scalive uses the Attach API to tell the target process to load an agent.
Inside the target progress, the agent creates a REPL interpreter and a TCP server to let the Scalive process connect and interact with the interpreter. The Scalive process acts as a TCP client. There are 2 TCP connections, one for REPL data and one for tab key completion data.
For simplicity and to avoid memory leak when you attach/detach many times, Scalive only supports processes with only the default system class loader, without additional class loaders. Usually they are standalone JVM processes, like Play or Xitrum in production mode.
Processes with multiple class loaders like Tomcat are currently not supported.