Advanced: VS Code as IDE
We are working on supporting VS Code for development. There is basic support, but important things such as our code conventions are not in place. Thus, use at your own risk.
- Start VS Code in the JabRef directory:
- There will be a poup asking “Reopen in Container”. Click on that link.
- VS Code restarts. Wait about 3 minutes until the dev container is build. You can click on “Starting Dev Container (show log)” to see the progress.
- Afterwards, the Java project is imported. You can open the log (Click on “Check details”). Do that.
- The terminal (tab “Java Build Status”) will show some project synchronization and hang at
80% [797/1000]. It keeps hanging at
Importing root project: 80% Refreshing '/jabref'. Just wait. Then it hangs at
Synchronizing Gradle build at /workspaces/jabref: 80%. Just wait. Then it takes long for
Refreshing workspace:. Just wait. Note: If you had the project opened in IntelliJ before, this might cause issues (as outlined at https://issuetracker.google.com/issues/255903901?pli=1). Close everything, ensure that you committed your changes (if any), then execute
git clean -xdfto wipe out all changes and created files - and start from step 1 again.
- On the left, you will see a gradle button.
- Click on the gradle button and open JabRef -> Tasks -> application.
- Double click on run.
- In the terminal, a new tab “run” opens.
- On your desktop machine, open http://127.0.0.1:6080/ in a web browser. Do not open the proposed port
6050. This is JabRef’s remote command port.
- You will see an opened JabRef.
Alternative to steps 9 to 10:
In case interaction using the web browser is too slow, you can use a VNC connection:
- Install VNC Connect
In case there are reading errors on the file system, the docker container probably is out of order. Close VS Code. Stop the docker container, kill docker process in the Task Manager (if necessary). Start docker again. Start VS Code again.
We use VS Code’s Dev Containers feature. Thereby, we use desktop-lite to enable viewing the JabRef app.