Last updated: October, 2026
ArtiSynth is an open-source Java-based platform that supports combined multibody/FEM modeling in an interactive simulation environment. Users may build their own models using Java code, or load preexisting models from either files or Java classes. This document describes how to install and run ArtiSynth on 64-bit Windows machines.
ArtiSynth’s prerequisites are listed in Section 2. You should use Java 21 or later. While ArtiSynth is currently compiled to be compatible with Java 8, this will be raised to Java 21 in the near future. If you use the Eclipse IDE (version 2024-09 or newer) the Java that comes with it is sufficient; otherwise, a Java development kit (JDK) must be installed on your system, as described in Section 4.
There are two ways to obtain ArtiSynth:
Install a precompiled release - the fastest way to quickly install ArtiSynth to try out some of the demo programs. Instructions for this are given in Section 5.
Install from GitHub - recommended for more serious developers who want to keep their codebase current and easily install new features and bug fixes. When installing from GitHub, ArtiSynth’s Java and native libraries are downloaded separately (usually automatically), and then it must be compiled. GitHub installation instructions are given in Section 6.
Once ArtiSynth is installed, it can be run and various demonstration models can be loaded. Some simple details on this are given in Section 7; complete instructions on running and interacting with models are provided in the ArtiSynth User Interface Guide.
Many users will want to create their own models in Java. This is done by creating Java classes to implement these models, as described in the ArtiSynth Modeling Guide, and then integrating them into ArtiSynth, as described in Section 8. When creating models, users may want to use an integrated development environment (IDE) for editing and compiling their Java code. At present, most of the ArtiSynth community uses the Eclipse IDE (Section 13), but other IDEs such as IntelliJ and VS Code could be used as well.
Users may also want to install and run external models and projects that have been created either by others or by themselves. In particular, the project artisynth_models contains an open source set of models primarily related to head and neck anatomy. Installation of artisynth_models is discussed in Section 11.
It is also possible to interface ArtiSynth with, or run it under, MATLAB. For information on this, see the guide Interfacing ArtiSynth to MATLAB.
To install ArtiSynth on Windows, you will need:
A 64-bit version of Windows running on an Intel or AMD processor (often referred to as x86_64, x64 or amd64).
Java 21 or later. If you are using the Eclipse IDE, the version of Java that comes with Eclipse (Java 21 or later for Eclipse 2024-09 and newer) is sufficient. Otherwise, you will need a Java development kit (JDK), which lets you compile Java code. See Section 4 for details.
If you are planning to use ArtiSynth with MATLAB, ArtiSynth should be run with Java 21, which is compatible with recent versions of MATLAB, as described in the guide Interfacing ArtiSynth to MATLAB.
A three-button mouse is useful for GUI interaction.
A machine with a good graphics card and a decent amount of system (RAM) memory. We recommend 16 Gbytes, or more if you are doing FEM analysis with larger numbers of elements.
You can install ArtiSynth in any location you like. In this document, the location of the ArtiSynth installation folder will be denoted by <ARTISYNTH_HOME>. For example if ArtiSynth is installed in
C:\people\roger\artisynth_core
then <ARTISYNTH_HOME> denotes this folder and <ARTISYNTH_HOME>\lib denotes the sub-folder
C:\people\roger\artisynth_core\lib
It is recommended that ArtiSynth be installed in a location where none of the folder names contain spaces (e.g., avoid placing it under Program Files). This will help ensure that all ArtiSynth utilities function correctly.
You should use Java 21 or later. While ArtiSynth is currently compiled to be compatible with Java 8, this will be raised to Java 21 in the near future.
If you are using the Eclipse IDE (Section 13), the version of Java that comes with Eclipse (Java 21 or later for Eclipse 2024-09 and newer) meets this requirement and is used by default to compile and run ArtiSynth. You will then need to install a separate Java development kit (JDK) only if
you want to compile or run ArtiSynth from a terminal window, outside of Eclipse; or
you need a specific version of Java. In particular, if you plan to use ArtiSynth with MATLAB, ArtiSynth should be run with Java 21, which is compatible with recent versions of MATLAB (see Interfacing ArtiSynth to MATLAB), whereas newer versions of Eclipse come with later versions of Java.
If you are not using Eclipse, you will need a JDK. A JDK includes a Java compiler, whereas a simple Java runtime environment (JRE) does not.
Any JDK of version 21 or later will work. Free builds of the JDK are available from several sources; we suggest Eclipse Temurin, available from
JDKs are also available from Oracle at www.oracle.com/java/technologies/downloads but may be subject to certain licensing restrictions.
Select your operating system and architecture, the package type JDK, and the desired version (21, or later). For Windows, choose the architecture x64; the easiest option is then the .msi installer.
The home folder for a JDK install, referred to below as <JDK_HOME>, is usually something like
C:\Program Files\Eclipse Adoptium\jdk-21.0.8.9-hotspot
for Temurin and
C:\Program Files\Java\jdk-21
for Oracle.
To compile or run ArtiSynth from a terminal window, the java and javac commands of your JDK must be visible there, and must supersede any other Java installations. To check this, open a CMD window and run the command
> javac -version
The output should match the version of the installed JDK. The JDK installer usually takes care of this. If it does not, or if the command javac is not found, then one fix is to add the folder <JDK_HOME>\bin to your system Path, as described in Section 14.1, where <JDK_HOME> is the JDK home folder described above. It should be added ahead of any other Java installations that might be specified. To see the current contents of the Path, open a CMD window and run the command
> echo %PATH%
Installing one of the precompiled releases is the easiest way to obtain ArtiSynth for running demo programs or some existing models. To do this, go to www.artisynth.org/downloads, download the distribution you want, and unzip it in an appropriate location on your computer.
Once ArtiSynth is downloaded and unzipped, it should be possible to run it immediately by using a file browser to locate and then double click on the batch file
<ARTISYNTH_HOME>\bin\artisynth.bat
You can create a shortcut to this batch file (by right clicking on it and selecting Create Shortcut), and then place the shortcut in either the START menu or on the Desktop. However, the file itself must remain in <ARTISYNTH_HOME>\bin.
ArtiSynth can also be run from a terminal window.
To do this, open a terminal (CMD) window, set the current folder to <ARTISYNTH_HOME>, and run the command bin\artisynth:
> cd <ARTISYNTH_HOME> > bin\artisynth
If you place <ARTISYNTH_HOME>\bin in your Path environment variable (Section 14.1), then ArtiSynth can be run from a terminal window with the simple command
> artisynthregardless of the current folder.
Details on how to load and run demo models are given in Section 7.
A precompiled ArtiSynth distribution can also be imported into an integrated development environment (IDE), such as Eclipse, to facilitate compilation and execution. To import ArtiSynth into Eclipse, follow the instructions in Section 13.2, using <ARTISYNTH_HOME> as the project directory.
For most users doing active modeling work, we recommend installing the current ArtiSynth development version from GitHub, which will provide ongoing access to updates and bug fixes. GitHub is a web-based repository service based on the source control management system Git. A very brief summary of Git is given in Section 14.5.
ArtiSynth is available from GitHub at the URL
https://github.com/artisynth/artisynth_core.git
After installation, users can continually update the ArtiSynth codebase to the latest version using pull operations (Section 12). In some cases, developers we work with closely can also obtain, by mutual arrangement, write access to our GitHub repository, allowing them to also commit changes.
Users who have a GitHub account combined with SSH keys may instead wish to clone using the SSH URL
git@github.com:artisynth/artisynth_core.gitFor users with repository write access, this will allow them to perform subsequent push operations without having to enter a username and password.
If you are planning to use the Eclipse IDE (Section 13), you can install from GitHub directly into Eclipse. Directions on installing Eclipse and configuring it for ArtiSynth development are given in Section 13.1. Once Eclipse is installed, ArtiSynth can be installed as follows:
From the main menu, select “File > Import ...”. This will cause an Import dialog to appear, as shown below. Open “Git > Projects from Git”, and then click Next.
In the next dialog, choose Clone URI, and click Next.
A Source Git Repository dialog will appear, as shown
below.
In the URI field at the top, enter
https://github.com/artisynth/artisynth_core.git
This will
automatically fill the Host and Repository path fields.
Click Next.
A Branch Selection dialog will appear. If multiple branches are available, make sure that only master is selected. Click Next.
A Local Destination dialog will appear as shown below, indicating the folder into which ArtiSynth will be placed locally. Use the default location, or edit it to the desired location. This will be your ArtiSynth home folder, and will be referred to later in this document as <ARTISYNTH_HOME>. Click Next.
ArtiSynth will now be downloaded; this may take a few minutes, depending on your network connection speed. Another dialog will appear, asking you to select a project import wizard. Leave the default (“Import existing Eclipse projects”) selected, and click Next.
An Import Projects dialog will appear, confirming that you want to import artisynth_core. Leave everything as is, and click Finish.
artisynth_core has now been imported into Eclipse as a project, and Eclipse will begin to build it, first by automatically downloading the Java and native libraries that ArtiSynth needs. (These are not included in the GitHub repository because they are quite large.) The download can be on the order of 200 Mbytes, and so may take up to several minutes, depending on network speed. Its progress is shown in Eclipse’s Console view, at the bottom of the Eclipse window:
On some versions of Eclipse, the console view may need to be opened explicitly, by selecting Window > Show View > Console from the main menu.
When the download is complete, the console will display the message LIBRARIES UPDATED SUCCESSFULLY:
Eclipse will then compile ArtiSynth, with the progress bar at the lower right showing compilation progress.
If some libraries could not be downloaded (e.g., because of a network problem), the console will say so, and the artisynth_core project will be marked with errors. After checking your network connection, you can retry the download by selecting Run > External Tools > UpdateArtisynthLibs from the main menu, or Project > Clean....
ArtiSynth is currently compiled to be compliant with Java 8, regardless of the Java version. The Eclipse settings supplied in artisynth_core\.settings ensure this. This will be raised to Java 21 in the near future.
After compilation is complete, ArtiSynth can be run by selecting artisynth_core in the Package Explorer and choosing Run > Run from the main menu:
Alternatively, you can click the small arrow beside the green Run button in the Eclipse toolbar and choose ArtiSynth. Either way works by invoking a predefined launch configuration named ArtiSynth. In some cases, one may wish to adjust the launch configuration to set environment variables, command line arguments, or Java JVM arguments that affect how ArtiSynth behaves. Instructions for doing so are contained in Sections 13.4 and 13.5.
Git for Windows is an application that provides the user with a terminal window interface that can be used for entering Git commands. Users can choose between GitBash, which provides a Unix-like bash shell, or GitCMD, which provides a Windows CMD shell. GitBash has several advantages, such as allowing users to easily set environment variables in a .bashrc file (Section 14.2.3), and supplying a number of Unix-like commands that can be convenient for tasks other than those involving Git.
At the time of this writing, Git for Windows can be installed from git-scm.com/download/win.
Once installed, ArtiSynth can then be installed and compiled by opening a GitBash window and entering the following commands (where the ‘$’ character indicates the GitBash prompt and should not be entered):
The first line simply sets the current folder to the one under which you wish to install ArtiSynth, as indicated by /path/to/install. (Note that GitBash follows the Unix convention of using forward slash (’/’) instead of backslash (’\’) to separate files.) The git clone command then downloads ArtiSynth and extracts it to a folder named artisynth_core, so that the ArtiSynth installation directory (or <ARTISYNTH_HOME>) is/path/to/install/artisynth_core. The updateArtisynthLibs command fetches additional libraries that are not included in the GitHub repository for space reasons, and the bin/compile command on the last line is an ArtiSynth-supplied utility that compiles all .java files located under the current folder. The updateArtisynthLibs and compile commands use the java and javac commands of your JDK, which must be visible from the command window (Section 4.1).
If you have GNU make installed on your system, then you can use that instead of the compile command, replacing
with
make also downloads any missing libraries automatically, so when using it, the updateArtisynthLibs step can be omitted.
ArtiSynth is currently compiled to be compliant with Java 8, regardless of the JDK version. The make and compile commands described above ensure this. This will be raised to Java 21 in the near future.
The make and compile commands automatically determine the Java classpath needed to compile ArtiSynth, consisting of the classes folder plus the .jar files listed in lib\LIBRARIES. If you have set the CLASSPATH environment variable, its entries are appended to this, except for any that refer to the lib folder. See Sections 10.1.2 and 14.2.
Once built, ArtiSynth can then be run (from within artisynth_core) using the command
For convenience, if you place <ARTISYNTH_HOME>\bin in your Path environment variable (Section 14.1), then ArtiSynth can be run independently of the current directory using the simple command
% artisynth
ArtiSynth can also be installed and compiled using GitCMD, with an analogous command sequence:
The only real difference is using backslash (’\’) instead of forward slash (’/’) as a file separator.
Details on how to load and run demo models are given in Section 7.
Note that once you have installed ArtiSynth, you still have the option to later import it into an IDE such as Eclipse. For Eclipse specifically, this is done by importing it as an external project, as described in Section 13.2.
After ArtiSynth starts up, you can load and run demonstration models. Do this by selecting Models > Demos from the main menu and choosing a demo model (Figure 1).
Once a model is loaded, it will appear in the viewer, and simulation can be controlled using the “play” controls located at the upper right of the application window:
From left to right, these are: step size control, which controls the simulation step size (in seconds); current simulation time (in seconds); and the reset, skip-back, play/pause, single-step, skip-forward and stop-all buttons. Starting and stopping a simulation is done by clicking play/pause, while reset resets the simulation to time 0. The single-step button advances the simulation by one time step. The stop-all button will also stop the simulation, as well as any Jython commands or scripts that are running.
Detailed information on how to use the ArtiSynth GUI for model visualization, navigation and simulation control is given in the ArtiSynth User Interface Guide.
Figure 2 shows ArtiSynth with the Spring Net demo loaded.
It is possible to load models in several ways:
Using a model menu entry, as described above;
Specifying the Java class describing the model (“Load from class ...” from the Models menu);
Specifying a .art file containing a text representation of the model (“Load model ...” from the File menu);
Reloading a recently loaded model (“Load recent” from the Models menu).
It is also possible to configure ArtiSynth to load a specific model when it starts up; see “Loading, Simulating and Saving Models” in the ArtiSynth User Interface Guide. The model menu can also be customized, as described in “Customizing the Model Menu”.
The ArtiSynth user interface provides a variety of tools for exploring and interacting with models, as described in depth in the ArtiSynth User Interface Guide, including:
3D viewers with grids and clipping planes;
Component selection using either a viewer or a tree-based navigation panel;
Property inspection and editing for selected components;
3D fixtures for translating, rotating and applying forces to models and their components;
A timeline for viewing and organizing input/output data streams known as probes;
Some simple model editing, including the ability to interactively delete components and add marker points;
Making movies from simulations.
If you are running ArtiSynth from a terminal window (Section 5.2) or GitBash (Section 6.2) then you can supply it with command line arguments to control different aspects of its behavior. A full list of these can be seen by running artisynth with the -help option:
> artisynth -help
Descriptions of these options appear in various places within the ArtiSynth documentation. For example, one commonly used option is -model <modelClassName>, which instructs ArtiSynth to preload a model associated with a given class name:
> artisynth -model artisynth.demos.mech.SpringMeshDemo
If you are running under Eclipse, command line arguments can be set in the launch configuration, as described in Section 13.5.
Most users will want to develop their own ArtiSynth models using Java code. This is done by creating a special Java model class, which is a subclass of RootModel and which contains a build() method that assembles the model from the various Java components that ArtiSynth provides. For example, suppose your model class is called MyModel. This will be implemented inside a Java source file called MyModel.java, a skeleton implementation of which might look like this:
Full details on how to create a model in Java and the components that are available to do so are given in the ArtiSynth Modeling Guide. For this discussion, we will consider only how to add a model to ArtiSynth once it has been created. The easiest way to do this is to add its source code to the ArtiSynth source code, as described below. However, as a general practice, it is recommended that the model source code be kept separate from ArtiSynth, as described in Section 10.
A model should be implemented inside a Java package, which will contain the model class, and perhaps other supporting classes used to implement it. The package is defined by the package statement at the beginning of each .java file. For the MyModel example above, the package is artisynth.models.mymodels.
Java enforces certain rules for how its source code is organized. In particular, all the .java files associated with a specific package must be placed in the same folder, which in turn must be located in a folder tree that reflects the package hierarchy. For example, source code for the package pack.foo.bar must be placed in a folder whose path (relative to the top of the source tree) is pack\foo\bar. For the MyModel example, MyModel.java must be placed in a folder artisynth\models\mymodels relative to the top of the source tree.
The source code tree for ArtiSynth is rooted at <ARTISYNTH_HOME>\src. It already contains a large number of model classes located in packages such as artisynth.demos.mech, whose source code is therefore located at
<ARTISYNTH_HOME>\src\artisynth\demos\mech
The easiest way to add your own model to ArtiSynth is to simply add the source code for its package to the appropriate location under <ARTISYNTH_HOME>\src. For MyModel, the source code would therefore be placed in
<ARTISYNTH_HOME>\src\artisynth\models\mymodels
Since the ArtiSynth source tree already contains the (empty) folder artisynth\models, in this case it would only be necessary to add the mymodels folder below it.
Multiple models may be placed in any given package. For example, artisynth.demos.tutorial contains a large number of models used as examples for the Modeling Guide.
When source code is added or modified within the ArtiSynth source tree, it needs to be compiled. How this is done depends on your development environment.
If you are using Eclipse and automatic building is enabled for a project (such as artisynth_core), compilation will occur automatically whenever that project’s .java files are modified. To see if automatic building is enabled, select the project in the Package Explorer, open the Project menu and check Build Automatically. If automatic building is not enabled, the project can be built by selecting Build Project.
If you add or edit source files from outside Eclipse, for example by using an external text editor, then you need to refresh the project in order for Eclipse to notice the changes. To refresh, select the project in the Package Explorer, and then either right-click and choose Refresh, or simply hit the F5 key.
If you are compiling from the command line or GitBash, using either the make or compile commands described earlier, then running these in any given source folder will compile all the .java files contained below it. This will typically be faster than compiling the entire source tree by running make or compile from <ARTISYNTH_HOME>.
To be able to run compile from any folder, place <ARTISYNTH_HOME>\bin in your Path environment variable (Section 14.1).
If you add a new package folder and want to run make from that folder, you will need to add a Makefile to it. The easiest way to do this is to simply copy an existing Makefile from another package and adjust the PACKAGE_NAME and ROOT_DIR entries; the number of ‘..’ entries in ROOT_DIR should equal the number of “up” steps needed to reach <ARTISYNTH_HOME>.
Once a model has been added to ArtiSynth, it is useful to be able to run it directly from the model menu, located under Models in the main menu bar.
By default, the model menu locates all models in the packages (and subpackages) of artisynth.demos andartisynth.models, and makes them available under the entries All demos > and All models >, respectively. Therefore, if your model is located in one of these packages, it will automatically appear in the Models menu. If your model is located in a different package, you can load it either by directly specifying its class path, or by customizing the Models menu. These options are described in the sections “Loading by class path” and “Customizing the Model Menu” of the ArtiSynth User Interface Guide.
When ArtiSynth is first run, it creates a configuration folder named ArtiSynthConfig beneath the user’s home folder. Various subfolders within this are used to store startup settings, model menu customizations, etc.
Startup settings that can be configured include those for the viewer, mouse bindings, model interaction and simulation, as discussed in the “Preferences” section and elsewhere in the ArtiSynth User Interface Guide.
While it is easiest to add a model to ArtiSynth by simply placing its source code under <ARTISYNTH_HOME>\src, as described in Section 8, it is usually best practice to keep model source code separate from ArtiSynth. This is largely to avoid conflicts when ArtiSynth is updated (Section 12) or reinstalled.
When model source code is external to ArtiSynth, one must manage two things:
Making the ArtiSynth classes visible to the Java compiler when compiling the code;
Making the model classes visible to ArtiSynth when running the model.
This involves managing the class path used by either the Java compiler or by ArtiSynth.
For purposes of this discussion, we will assume that the model is contained under a top-level folder denoted by <MYPROJECT>, and that the root folders for the Java source code and class files are <MYPROJECT>\src and <MYPROJECT>\classes, respectively. This Java file structure is common, and is used by artisynth_core and most other projects currently associated with ArtiSynth.
How this is done depends on your development environment.
When using Eclipse, the project will also be associated with an Eclipse project name, which we will call myproject. In order for myproject to compile, the ArtiSynth project artisynth_core should be added to the build path of myproject, as described in Section 13.6. This will ensure that the ArtiSynth classes are added to the class path used by the Java compiler.
Some projects, such as artisynth_models, already have their build path preconfigured to contain artisynth_core, and so for them this step is unnecessary.
If you are compiling from the command line or GitBash, then the compile command described earlier will still work, provided that, as assumed above, <MYPROJECT> contains the source and classes folders src\ and classes\. The compile command will supply the Java compiler with a class path containing all the ArtiSynth classes, plus <MYPROJECT>\classes. If additional classes are needed (such as external JAR files or class folders from other projects), they may be added by setting them in the CLASSPATH environment variable (Section 14.2).
Use of the make command will require setting up Makefiles in the folders in which you wish to run make. It will also (usually) require setting the CLASSPATH environment variable to contain the ArtiSynth class path entries,
<ARTISYNTH_HOME>\classes;<ARTISYNTH_HOME>\lib\*
where as usual <ARTISYNTH_HOME> should be expanded to the path for the ArtiSynth installation directory. The character ‘*’ functions as a wildcard to specify all the JAR files in <ARTISYNTH_HOME>\lib.
When running ArtiSynth under Eclipse, you can make myproject’s models visible by adding myproject to the ArtiSynth launch configuration, as described in Section 13.7. As noted in that section, be sure to use a copy of the launch configuration, to avoid possible pull refusals when ArtiSynth is updated (Section 12).
External models can be made visible to ArtiSynth by adding any needed class folders and JAR files to the external class path. The easiest way to do this is to select “Settings > External classpath ...” from the Settings menu, which will open an external classpath editor as shown in Figure 3, allowing the necessary class folders and JAR files to be added. The classpath entries are displayed in a large panel on the left (which will initially be blank after ArtiSynth is first installed).
As an example, assume that the model class files are contained under <MYPROJECT>\classes, and that the JAR file <MYPROJECT>\lib\dicom.jar is also required. If <MYPROJECT> is located at C:\research\myproject, then the following entries should be added to the external classpath:
C:\research\myproject\classes C:\research\myproject\lib\dicom.jar
ArtiSynth must be restarted for external classpath changes to come into effect.
More details are given in the section “Setting the external classpath” of the ArtiSynth User Interface Guide. The external classpath is stored in the file EXTCLASSPATH in the user configuration folder and can be edited directly (Section 14.4).
The external classpath can be used when running from Eclipse or any other IDE.
When running ArtiSynth from the command line, external models can also be made visible by adding class folders and JAR files to the CLASSPATH environment variable, as described in Section 14.2. For the example of Section 10.2.2, we could instead add the following to CLASSPATH:
C:\research\myproject\classes;C:\research\myproject\lib\dicom.jar
Note that in this situation the ArtiSynth class files do not need to be included in CLASSPATH, as they will be added automatically.
ArtiSynth also provides the command line option -cp which allows a class path to be specified directly:
> artisynth -cp "C:\research\myproject\classes;C:\research\myproject\lib\dicom.jar"
Class paths specified using -cp will replace any specified through the CLASSPATH variable.
artisynth_models is an open source collection of anatomical models, focused primarily on the head and neck region (see www.artisynth.org/models). It can be obtained either as a precompiled release, or from GitHub.
Once installed, the models will appear in the ArtiSynth Models menu under Models > and All models >.
If you are running a precompiled release of ArtiSynth, then you will need to use the corresponding precompiled release of artisynth_models, which can be obtained from
www.artisynth.org/Software/ModelsDownload
Download the distribution you want and unzip it in your desired location; the recommended spot is right next to artisynth_core.
artisynth_models comes preconfigured with Eclipse project files, and so can be immediately imported into Eclipse as an external project, as described in Section 13.2. To make the models visible to ArtiSynth when running from Eclipse, it will be necessary to add artisynth_models to the ArtiSynth launch configuration, as described in Section 13.7.
If you are running ArtiSynth from the command line or the artisynth.bat file, you will need to ensure that the class folder artisynth_models\classes is visible to ArtiSynth, as described in Section 10.2.
The latest development version of artisynth_models is available from GitHub at the URL
https://github.com/artisynth/artisynth_models.git
If you are using Eclipse, you can install artisynth_models in the same way as for artisynth_core (Section 6.1):
Select “File > Import ...”, open “Git > Projects from Git” in the Import dialog, and click Next.
In the Select Repository Source dialog, choose Clone URI, and click Next.
In the Source Git Repository dialog,
enter
https://github.com/artisynth/artisynth_models.git
in the URI field at the top, and click Next.
In the Branch Selection dialog, make sure that only master is selected, and click Next.
In the Local Destination dialog, adjust the install location if desired, and click Next.
artisynth_models will now be downloaded. A “wizard” dialog will then appear. Leave the default (“Import existing Eclipse projects”) selected, and click Next.
In the Import Projects dialog, click Finish.
artisynth_models should now compile automatically; there is no need to download external libraries. However, to make the models visible to ArtiSynth when running from Eclipse, it will be necessary to add artisynth_models to the ArtiSynth launch configuration, as described in Section 13.7.
If you have Git for Windows installed (Section 6.2), and you have placed <ARTISYNTH_HOME>\bin in your Path environment variable (Section 14.1), allowing the compile command to be called from any folder, then artisynth_models can be installed from GitBash as follows:
The last line uses the compile command instead of make because the latter will not work unless the CLASSPATH environment variable has been set to include the ArtiSynth class path entries, as described in Section 10.1.2.
If you run ArtiSynth from the command line, you will need to ensure that artisynth_models\classes is visible to ArtiSynth, as described in Section 10.2.
One reason to install ArtiSynth from GitHub is to be able to update the codebase to incorporate new features and bug fixes. When a significant update occurs, a posting is made to the ArtiSynth update log, currently located at www.artisynth.org/doc/html/updates/updates.html. Users may also be notified via the artisynth-updates email list.
Eclipse users may update simply by selecting the artisynth_core in the Package Explorer and then right clicking and choosing Team > Pull.
If Git for Windows is installed (Section 6.2), then updating may be done using GitBash:
$ cd <ARTISYNTH_HOME> $ git pull
After pulling from the command line, ArtiSynth should be recompiled, using either make or compile.
Other Git-based projects, such as artisynth_models, may be updated similarly.
An update may also change the libraries that ArtiSynth needs, as listed in the file <ARTISYNTH_HOME>\lib\LIBRARIES. Such changes are normally handled automatically:
In Eclipse, any new or changed libraries are downloaded the next time the project is built, as during installation (Section 6.1).
When compiling with make, any new or changed libraries are downloaded before compilation begins.
When ArtiSynth starts up, it checks that all the required libraries are present and downloads any that are missing.
In each case, older versions of the libraries, and libraries that are no longer needed, are removed from <ARTISYNTH_HOME>\lib.
Libraries can also be updated explicitly using the command updateArtisynthLibs located in <ARTISYNTH_HOME>\bin, which can be run from a terminal window:
> cd <ARTISYNTH_HOME> > bin\updateArtisynthLibs
or, from within Eclipse, by selecting Run > External Tools > UpdateArtisynthLibs from the main menu. Selecting “Update libraries” from the ArtiSynth File menu, or running ArtiSynth with the -updateLibs option, will also check that the installed libraries match the latest versions on the ArtiSynth server.
If you have modified files in artisynth_core (or another ArtiSynth-supported project such as artisynth_models) which are also changed by the update, Git will refuse the pull, and list the files concerned.
If the pull was attempted using Team > Pull in Eclipse, then a Pull Problem box will appear (Figure 4). Clicking Details will provide further information, with the conflicting files listed after the words “Checkout conflict with files”.
If the pull was attempted on the command line, then the pull will fail with a message similar to
error: Your local changes to the following files would be overwritten by merge:
.classpath
.project
ArtiSynth.launch
Please commit your changes or stash them before you merge.
Nothing is lost when this happens: your files and the codebase remain as they were. However, in order to proceed with the pull, you need to either discard the conflicting files, or attempt to merge them.
If you do not need your changes to the listed files, the simplest remedy is to discard them and then pull again. This is especially recommended when the conflicting files are Eclipse project files, such as .project, .classpath, ArtiSynth.launch, or files under .settings. Ideally these files are not modified by the user at all (see the side block below), but if they are, it is usually easiest to remove them and re-apply your changes after the pull.
Two ways to easily discard the files are:
In a file browser or from a CMD or GitBash window, simply delete the given files, and then pull again; the pull will restore the files in their updated form. (You can also rename the files if you want to later try to merge back your local changes.)
Important: if you pull again in Eclipse, avoid refreshing the project before doing Team > Pull, as this might cause certain project files (like .classpath) to be rebuilt.
From a CMD or GitBash window, run
> git checkout -- <file1> <file2> ... > git pull
where <file1> <file2> ... are the path names of the conflicting files.
ArtiSynth.launch is modified locally when a user edits the ArtiSynth launch configuration to set environment variables or ArtiSynth/JVM arguments (Sections 13.4.1 and 13.5), or to add external projects (Section 13.7), without first making a local copy of it (Section 13.3). A local launch configuration copy will avoid conflicts.
.classpath may get modified if the user adds extra .jar files or external projects to the project build path. There is normally no need to do this: projects such as artisynth_core and artisynth_models are configured with the resources required to build them, and any new classes requiring additional resources should be placed in a separate project.
.project should not normally be modified, but might be to provide interoperability with other IDEs such as VS Code.
Files in .settings/ are modified when a user changes the project properties, such as via Project > Properties.
If you want to try to keep your changes, two ways to do this are:
Use a stash/pull/pop sequence. From a CMD or GitBash window, run
> git stash > git pull > git stash pop
If your changes conflict with those of the update, git stash pop will report a conflict, which must then be resolved by editing the files concerned. Conflict resolution at the command line level is outside the scope of this document, but documentation is available online.
Within Eclipse, you can commit your changes (using the Git Staging view or Team > Commit), and then choose Team > Pull. Any conflicts can then be resolved using Team > Merge Tool, as described in the section “Resolving a merge conflict” of the EGit User Guide. Note that your local branch will then contain your own commit, so that subsequent pulls will also produce merges.
Eclipse is an integrated development environment (IDE) commonly used for Java code development, and many ArtiSynth developers use it for both developing models in Java and for running the system. This section describes how to install Eclipse and provides some other information relevant to ArtiSynth users. A general introduction to Eclipse is beyond the scope of this document, but there are many Eclipse resources available online.
Eclipse is released quarterly, with versions named by year and month (e.g., 2026-09). Any recent version should work; the instructions below use 2026-09 as an example.
Eclipse can be downloaded from www.eclipse.org/downloads/packages. From this page, choose “Eclipse IDE for Java Developers”, Windows x86_64, which will download a file named
eclipse-java-2026-09-R-win32-x86_64.zip
Unzip this into a convenient folder, such as for example:
C:\eclipse\eclipse-2026-09
Open this folder with a file explorer, and you will see the eclipse application:
Click on this to open it. A dialog will appear, asking you to select a workspace folder (Figure 5). This is where Eclipse settings and project information will be stored. Unless you have another Eclipse already installed, the default location should be fine. (Remember also to check the “Use this as the default ...” box so that this query won’t appear every time you open Eclipse.) Next, click Launch. A welcome page will appear; close this. A “donate” panel may also appear; close this too. You should then see an empty Eclipse display, similar to Figure 6.
Eclipse comes with its own version of Java, which it uses by default and which is sufficient for compiling and running ArtiSynth. However, if you have installed a separate JDK and want Eclipse to use it instead (e.g., to use Java 21 with MATLAB; see Section 4), configure Eclipse as follows:
From the main menu, select “Window > Preferences”.
A Preferences dialog will open. In the left panel, select “Java > Installed JREs”, which will open an Installed JREs panel. This will list Eclipse’s own version of Java (named jre), and possibly other JDKs that Eclipse has found on your system. If your JDK is listed, click on the box to the left of its entry to select it, and skip to the last step. Otherwise, click the Add... button at the right.
A JRE Type dialog will appear. Leave “Standard VM” selected in the dialog and click Next.
A JRE Definition dialog will appear. In the “JRE home” field at the top, enter the home folder for your JDK (Section 4). This will cause some other fields to fill in automatically, as seen in Figure 7.
Click Finish. Your Java JDK will now show up in the list of installed JREs. Click on the left box to select it, as shown in Figure 8.
Finish by clicking the “Apply and Close” button at the bottom of the Preferences dialog.
By default, ArtiSynth classes are placed in file tree located beneath <ARTISYNTH_HOME>\classes that is separate from the source tree located beneath <ARTISYNTH_HOME>\src. That means that Eclipse will try to copy all non-Java files and folders from the source tree into the build tree. For ArtiSynth, this is excessive, and results in many files being copied that don’t need to be, since ArtiSynth looks for resources in the source tree anyway.
To prevent this copying:
Choose “Window > Preferences”.
Select Java > Compiler > Building.
Open Output folder, and in the box entitled Filter resources, enter the single character ‘*’.
Let <PROJECT_DIR> denote the top-level folder of the project to be imported. (In the case of artisynth_core, this will also be <ARTISYNTH_HOME>.) Assuming that <PROJECT_DIR> contains an Eclipse .project file, you can import it into Eclipse as follows:
From within Eclipse, choose “File > Import ...”.
An Import dialog will appear. Select General > Existing Projects into Workspace and click Next.
An Import Projects dialog will appear. In the field Select root directory, enter (or browse to) the parent folder of <PROJECT_DIR>. The project itself should now appear in the Projects box (Figure 9). (If other projects are contained in the parent folder, these will appear as well.) Make sure that the desired project is selected and then click Finish.
If Eclipse complains that "No projects are found to import", or does not otherwise show the project as available for import, then most likely the <PROJECT_DIR> folder does not contain a .project file.
ArtiSynth is run from Eclipse using the launch configuration named ArtiSynth, which is stored in the file ArtiSynth.launch in artisynth_core. Since this file is part of the ArtiSynth codebase, editing it (to set arguments or add projects, as described in the following sections) may later cause a Git pull to be refused (Section 12.2). It is therefore better to make a copy of the launch configuration and edit that instead:
From the main menu, choose “Run > Run Configurations...” to open the Run Configurations dialog.
In the left panel, under Java Application, right click on ArtiSynth and choose Duplicate.
In the right panel, change the Name of the copy to something like MyArtiSynth.
Select the Common tab, and make sure that Local file is selected under Save as, so that the copy is stored in your Eclipse workspace rather than in artisynth_core.
Click Apply.
The copy can then be run from the Run Configurations dialog, or by clicking the small arrow beside the green Run button in the Eclipse toolbar and choosing it from the menu.
While it is generally not necessary to set environment variables in Eclipse, it may be useful to do this on occasion to control certain aspects of ArtiSynth’s operation. Directions on setting the environment variables are given in Section 13.4.1, and descriptions of the variables themselves may be found in Section 14.2.
If any environment variables have already been set externally in Windows (Sections 14.2.1 and 14.2.2), such that they are visible to Eclipse at start-up, then they do not need to be set in the launch configuration.
To set environment variables within Eclipse:
Open a java perspective if necessary by choosing Window > Open Perspective > Java.
Choose “Run > Run Configurations...” to open the Run Configurations window.
In the left panel, under Java Application, select your launch configuration (preferably a copy of the default ArtiSynth configuration; see Section 13.3).
In the right panel, select the Environment tab.
To create a new environment variable, click the New button and enter the name and value in the dialog box.
When finished, make sure that Append environment to native environment is selected, and click Apply.
As described in Section 7.4, the artisynth command accepts command line arguments. To invoke these when running from Eclipse, it is necessary to set the desired arguments in the launch configuration, as described below.
Sometimes it may also be necessary to set JVM arguments, which control the Java virtual machine running ArtiSynth. An example of such an argument is -XX:MaxRAMPercentage=NN, which sets the maximum amount of memory available to the application to NN percent of the computer’s memory. For example, -XX:MaxRAMPercentage=50 allows ArtiSynth to use up to half of the computer’s memory. The default value is 25.
To set command line arguments for your Eclipse application:
Open a java perspective if necessary by choosing Window > Open Perspective > Java.
Choose “Run > Run Configurations...” to open the Run Configurations window.
In the left panel, under Java Application, select your launch configuration (preferably a copy of the default ArtiSynth configuration; see Section 13.3).
In the right panel, select the Arguments tab.
Program arguments (which are passed directly to ArtiSynth) should be specified in the Program arguments box. JVM arguments should be specified in the VM arguments box. See Figure 10.
When finished, click Close.
A project imported into Eclipse may depend on the packages and libraries found in other projects to compile properly. For example, ArtiSynth applications which are external to artisynth_core will nonetheless depend on artisynth_core. To ensure proper compilation, project dependencies should be added to each dependent project’s build path.
Select the dependent project in the Package Explorer form.
Right click and choose “Build Path > Configure Build Path...”
In the right panel, select the Projects tab.
Click the Add button, select the project dependencies, and click OK
Click OK in the Java Build Path panel
The classes of external projects can be made visible to ArtiSynth by adding the projects themselves to the Classpath of the ArtiSynth launch configuration.
From the main menu, choose “Run > Run Configurations...” to open a Run Configurations dialog.
In the left panel, under Java Application, select your ArtiSynth launch configuration (preferably a copy of the default ArtiSynth configuration; see Section 13.3).
In the right panel, select the Classpath tab.
In the Classpath window, select User Entries, and then click the Add Projects button.
In the Project Selection dialog, select the external projects that you wish to add. Generally, the boxes “Add exported entries ...” and “Add required projects ...” can be unchecked. Click OK.
Close the Run Configurations dialog.
The system “Path” is a list of directories which the system searches in order to find executables. Adding a directory to the path allows executables contained in that directory to be called directly from a command window such as CMD.
Open the Start search, enter “env”, and choose “Edit the system environment variables”.
Click on Environment Variables.
Under User variables (the top window), click on Path and click Edit. If Path does not exist, click New.
In the Edit environment variable dialog, click New and enter the full path name for each directory you wish to add.
Close each dialog by clicking OK.
For example, if ArtiSynth is installed at C:\artisynth\artisynth_core, then you would add the directory
C:\artisynth\artisynth_core\bin
Most command windows and applications need to be restarted in order to get them to notice changes to Path.
This is a glossary of all the environment variables that are associated with building or running ArtiSynth. Often, the system can detect and set appropriate values for these automatically. In other cases, as noted in the above documentation, it may be necessary or desirable for the user to set them explicitly.
The path name of the ArtiSynth installation folder.
A list of folders and/or JAR files, separated by semi-colons ‘;’, which Java uses to locate its class files.
A list of folders, separated by semi-colons ‘;’, which the operating system uses to locate executable programs and applications. Placing <ARTISYNTH_HOME>\bin in Path (as described in Section 14.1) will allow you to run artisynth and related commands directly from a command window.
Specifies the maximum number of processor cores that are available for multicore execution. If not set, the system uses the maximum number of cores available. Users can also set this number from within ArtiSynth by setting the configuration property numSolverThreads, either for the current session by choosing “Settings > Interaction ...” from the main menu, or for all sessions by choosing “Settings > Preferences ... > Interaction”.
Note that settings for most of the above can be derived from the value of ARTISYNTH_HOME.
On Windows, a user can view, set, or change environment variables via the following steps:
Open the Start search, enter “env”, and choose “Edit the system environment variables”.
Click on Environment Variables.
Choose one of the following options:
Click New to add a new variable name and value.
Click an existing variable, and then Edit to change its name or value.
Click an existing variable, and then Delete to remove it.
Close each dialog by clicking OK.
Variable settings can reference other environment variables by surrounding them with percent signs, as in %VAR_NAME%. For example, suppose you already have an environment variable HOME that gives the location of your home folder, and your ArtiSynth distribution is located in packages\artisynth_core relative to your home folder. Then the environment variable ARTISYNTH_HOME can be specified as
%HOME%\packages\artisynth_core
Typical settings for the environment variables described above might look like this:
When using GitBash (Section 6.2), it is possible to set environment variables in a .bashrc file located in the user’s home folder. The file entries corresponding to the settings of Section 14.2.2 would look like this:
Note that the CLASSPATH environment variable must be set using a Windows format, with backslash (’\’) to separate files and semicolon (’;’) to separate path entries. This requirement is imposed by the Java compiler.
ArtiSynth uses a set of libraries located under <ARTISYNTH_HOME>\lib. These include a number of JAR files, plus native libraries located in architecture-specific sub-folders (such as Windows64 for 64-bit Windows systems).
When ArtiSynth is installed from GitHub, these libraries are not part of the repository, but are downloaded from the ArtiSynth server. The required libraries are listed in the file <ARTISYNTH_HOME>\lib\LIBRARIES. This file is part of the repository, so that the system can always determine what libraries are needed for a particular version of the code. The classpath used to compile and run ArtiSynth is formed from the JAR files listed in LIBRARIES, rather than from all the JAR files in <ARTISYNTH_HOME>\lib.
Libraries are downloaded automatically, by Eclipse when it builds artisynth_core, by make, and by ArtiSynth itself when it starts up, as described in Section 12. When a library is replaced by a newer version, the older version is removed, as are libraries that are no longer needed (which are listed in the file <ARTISYNTH_HOME>\lib\OBSOLETE).
The EXTCLASSPATH file is stored in the user configuration folder (Section 9) and contains the entries for the external class path (Section 10.2.2). It is usually edited within ArtiSynth by selecting “External classpath ...” from the Settings menu but can also be edited directly. Each file entry describes a class folder or JAR file needed to run models external to the core ArtiSynth package. Entries are usually placed one per line, but multiple entries can be made on the same line if separated by semi-colons ‘;’.
The syntax rules for EXTCLASSPATH are:
Entries on the same line should be separated semi-colons ‘;’.
The ‘#’ character comments out all remaining characters to the end of line.
The ‘$’ character can be used to expand environment variables.
Any spaces present will be included in the entry name.
An example EXTCLASSPATH might look like this:
C:\research\artisynth_models\classes C:\research\models\special.jar $HOME\projects\crazy\classes
Git is a distributed source control management (SCM) system that is widely used in the software industry. A full discussion of Git is beyond the scope of this document, but a large literature is available online. Generally, when you clone a Git repository, you create a local copy of that repository on your machine, along with a checked out working folder containing the most recent version of the code (which is referred to as the HEAD).
Unlike client/server SCMs, Git is distributed, with users maintaining their own private copies of a repository. This allows a great deal of flexibility in usage, but also adds an extra “layer” to the workflow: when you “checkout” from a repository or “commit” to it, you do so with respect to your own local copy of that repository, not the original (origin) repository from which you performed the original clone. The process of merging in changes from the origin to the local repository is known as “pulling”, while committing changes from the local repository back to the origin is known as “pushing”.
There is also another layer of interaction when you commit changes to the local repository: you first add them to a staging area (also known as the “index”), and then commit them using the commit command.
A very simple workflow for a typical ArtiSynth user is summarized below. The actions are described in command-line form, but the same commands can generally be issued through Eclipse or other interfaces. First, clone the most recent version of the ArtiSynth repository on GitHub:
git clone https://github.com/artisynth/artisynth_core.git [<dir>]
This will create a local copy of the GitHub repository, along with a checked out “working copy”, in the folder specified by <dir>, or in artisynth_core if <dir> is omitted. The repository itself will be located in a sub-folder called .git.
Other Git repositories can be cloned in a similar manner. If the repository has read access restrictions, then when performing a checkout it may also be necessary to specify a user name for which the repository has granted read access. This is typically done by embedding the user name in the URL, as in (for example):
https://user@host.xz/path/to/repo.git
Later, to fetch the latest updates from the GitHub repository and merge them into your working copy, from within the working copy folder you can do
git pull
If you make changes to some files in your working copy and wish to commit these to your local repository, you first add (or remove them) from the staging area using commands such as:
git add <fileName> # add a new (or modified) file git add * # add all files git rm <fileName> # remove a file
and then commit them to your local repository using
git commit -m "commit message"
Note that you can also add modified files and commit them using the single command
git commit -a -m "commit message"
To see the current status of the files in your working copy and the staging area, use the command
git status
and to see the commit history for particular files or folders, use
git log [ <filename> ... ]
Finally, to push your changes back to the GitHub repository (assuming you have permission do so), you would do so using the command
git push origin master
Note that the above commands all have various options not mentioned. There are also numerous topics that haven’t been discussed, including the creation and merging of branches, but there are many useful online resources that describe these in detail. Some current references include
https://git-scm.com/docs https://rogerdudler.github.io/git-guide