Frequently Asked Questions (FAQ)
Following is a list of common errors encountered by developers which lead to failing tests, with their common solutions:
Failing tests
Failing Checkstyle tests
JabRef follows a pre-defined style of code for uniformity and maintainability that must be adhered to during development. To set up warnings and auto-fixes conforming to these style rules in your IDE, follow Step 3 of the process to set up a local workspace in the documentation. Ideally, follow all the set up rules in the documentation end-to-end to avoid typical set-up errors.
Note: The steps provided in the documentation are for IntelliJ, which is the preferred IDE for Java development. The checkstyle.xml
is also available for VSCode, in the same directory as mentioned in the steps.
Failing OpenRewrite tests
Execute the Gradle task rewriteRun
from the rewrite
group of the Gradle Tool window in IntelliJ to apply the automated refactoring and pass the test:
Background: OpenRewrite is an automated refactoring ecosystem for source code.
org.jabref.logic.l10n.LocalizationConsistencyTest findMissingLocalizationKeys
FAILED
You have probably used Strings that are visible on the UI (to the user) but not wrapped them using Localization.lang(...)
and added them to the localization properties file.
Read more about the background and format of localization in JabRef here.
org.jabref.logic.l10n.LocalizationConsistencyTest findObsoleteLocalizationKeys
FAILED
Navigate to the unused key-value pairs in the file and remove them. You can always click on the details of the failing test to pinpoint which keys are unused.
Background: There are localization keys in the localization properties file that are not used in the code, probably due to the removal of existing code. Read more about the background and format of localization in JabRef here.
org.jabref.logic.citationstyle.CitationStyle discoverCitationStyles
ERROR: Could not find any citation style. Tried with /ieee.csl.
Check the directory src/main/resources/csl-styles
. If it is missing or empty, run git submodule update
. Now, check inside if ieee.csl
exists. If it does not, run git reset --hard
inside that directory.
java.lang.IllegalArgumentException
: Unable to load locale en-US ERROR: Could not generate BibEntry citation. The CSL engine could not create a preview for your item.
Check the directory src/main/resources/csl-locales
. If it is missing or empty, run git submodule update
. If still not fixed, run git reset --hard
inside that directory.
org.jabref.architecture.MainArchitectureTest restrictStandardStreams
FAILED
Check if you’ve used System.out.println(...)
(the standard output stream) to log anything into the console. This is an architectural violation, as you should use the Logger instead for logging. More details on how to log can be found here.
org.jabref.architecture.MainArchitectureTest doNotUseLogicInModel
FAILED
One common case when this test fails is when you put any class purely containing business logic inside the model
package (i.e., inside the directory org/jabref/model/
). To fix this, shift the class to a sub-package within the logic
package (i.e., the directoryorg/jabref/logic/
). An efficient way to do this is to use IntelliJ’s built-in refactoring capabilities - right-click on the file, go to “Refactor” and use “Move Class”. The import statement for all the classes using this class will be automatically adjusted according to the new location.
More information on the architecture can be found at ../getting-into-the-code/high-level-documentation.md.
Gradle outpus
ANTLR Tool version 4.12.0 used for code generation does not match the current runtime version 4.13.1
Execute the Gradle task clean
from the build
group of the Gradle Tool Window in IntelliJ:
BstVMVisitor.java:157: error: package BstParser does not exist
Execute gradle task clean
from the build
group of the Gradle Tool Window in IntelliJ.