If you happen to see a question you know the answer to, please do chime in and help your fellow community members. We encourage our fourm members to be more involved, jump in and help out your fellow researchers with their questions. GATK forum is a community forum and helping each other with using GATK tools and research is the cornerstone of our success as a genomics research community.We appreciate your help!

Test-drive the GATK tools and Best Practices pipelines on Terra

Check out this blog post to learn how you can get started with GATK and try out the pipelines in preconfigured workspaces (with a user-friendly interface!) without having to install anything.

IncompatibleClassChangeError when running gatk BaseRecalibrator

Dear all,

I am using GATK's version:
$ gatk -version
Using GATK jar /home/gigiux/src/gatk/gatk-package-
with Java:
$ java -version
java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)

On an Ubuntu 16 machine. I would like to use BaseRecalibrator to recalibrate the base quality of an alignment.

I removed the BAM file's duplicates with SAMBAMBA:
sambamba markdup -r --overflow-list-size 1000000 --hash-table-size 1000000 <input>.bam <output>.bam

I am using the VCF file clinvar.vcf.gz and the reference human Homo_sapiens.GRCh38.dna.toplevel.fa.gz, which I have called grch38.fa for short; both files call the chromosomes with numbers only.

I created the index fasta and dictionary of the reference sequence:
samtools faidx grch38.fa
java -jar ~/src/picard/picard.jar CreateSequenceDictionary R=grch38.fa O=grch38.dict

I then ran GATK with this:
gatk BaseRecalibrator -I <file>.bam -R ~/grch38.fa --known-sites ~/grch38.vcf.gz -O <file>.tab

but I got:

14:02:01.642 INFO  BaseRecalibrator - Initializing engine`
14:02:01.935 INFO  FeatureManager - Using codec VCFCodec to read file file:///home/gigiux/refSeq/human/grch38/old/grch38.vcf.gz`
14:02:01.969 WARN  IndexUtils - Feature file ` 
"/home/gigiux/refSeq/human/grch38/old/grch38.vcf.gz" appears to contain no sequence dictionary. Attempting to retrieve a sequence dictionary from the associated index file
 14:02:02.035 INFO  BaseRecalibrator - Done initializing engine`
 14:02:02.068 INFO  BaseRecalibrationEngine - The covariates being used here: `
 14:02:02.069 INFO  BaseRecalibrationEngine -   ReadGroupCovariate`
 14:02:02.069 INFO  BaseRecalibrationEngine -   QualityScoreCovariate`
 14:02:02.069 INFO  BaseRecalibrationEngine -   ContextCovariate`
 14:02:02.069 INFO  BaseRecalibrationEngine -   CycleCovariate`
 14:02:02.084 INFO  ProgressMeter - Starting traversal`
 14:02:02.084 INFO  ProgressMeter -        Current Locus  Elapsed Minutes       Reads Processed     Reads/Minute`
 14:02:02.087 INFO  BaseRecalibrator - Shutting down engine`
 [27 September 2018 at 14:02:02 CEST] ` done. Elapsed time: 0.01 minutes.`
 Exception in thread "main" java.lang.IncompatibleClassChangeError: Inconsistent constant pool data in classfile for class org/broadinstitute/hellbender/transformers/ReadTransformer. `
 Method lambda$identity$d67512bf$1(Lorg/broadinstitute/hellbender/utils/read/GATKRead;)Lorg/broadinstitute/hellbender/utils/read/GATKRead; at index 65 is CONSTANT_MethodRef and should be CONSTANT_InterfaceMethodRef`

I think the main message is: Exception in thread "main" java.lang.IncompatibleClassChangeError
at index 65 is CONSTANT_MethodRef and should be CONSTANT_InterfaceMethodRef.

How can I sort this out? How could that variable be changed? (I haven't touch anything within GATK...)

Thank you


  • LouisBLouisB Broad InstituteMember, Broadie, Dev ✭✭

    Hi @Gigiux,

    I believe the problem is due to the fact that you're running java 10. GATK is currently only able to run on Java 8. Could you try again with Java 8 and see if the problem resolves?

    We'd like to support Java 9+ but it's a non-trivial change and we have no timeline to do so currently. We're stuck on 8 until a number of libraries we depend on start to support newer versions.


  • GigiuxGigiux Member

    Thank you. Can I install multiple version of Java? Do I need to tell GATK what version it shall use with a particular flag? Can I use openJDK?

  • GigiuxGigiux Member

    Looks like I can work with openJDK: I changed the default java version with:
    $ sudo update-alternatives --config java
    [sudo] password for :
    There are 2 choices for the alternative java (providing /usr/bin/java).

      Selection    Path                                            Priority   Status
      0            /usr/lib/jvm/java-10-oracle/bin/java             1091      auto mode
      1            /usr/lib/jvm/java-10-oracle/bin/java             1091      manual mode
    * 2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode

    I selected option 2 and then run GATK; the output was:
    Press to keep the current choice[*], or type selection number:
    11:37:38.556 INFO ProgressMeter - Traversal complete. Processed 57868745 total reads in 18.4 minutes.
    11:37:38.722 INFO BaseRecalibrator - Calculating quantized quality scores...
    11:37:38.737 INFO BaseRecalibrator - Writing recalibration report...
    11:37:39.516 INFO BaseRecalibrator - ...done!
    11:37:39.516 INFO BaseRecalibrator - Shutting down engine
    [01 October 2018 11:37:39 CEST] done. Elapsed time: 18.89 minutes.
    Tool returned:

Sign In or Register to comment.