samtools / htsjdk

A Java API for high-throughput sequencing data (HTS) formats.
http://samtools.github.io/htsjdk/
278 stars 244 forks source link

Nashorn engine removed from OpenJDK 17 causes htsjdk to throw exceptions #1611

Closed pgrt closed 1 year ago

pgrt commented 2 years ago

Hello,

I am working on the packaging of htsjdk in Debian. Soon OpenJDK 17 will become the standard in Debian, so I built htsjdk against OpenJDK 17 and got the following issues:

Gradle suite > Gradle test > htsjdk.samtools.filter.JavascriptSamRecordFilterTest.testJavascriptFilters[0](unsorted.sam, samFilter01.js, 8) FAILED htsjdk.samtools.util.RuntimeScriptException: The embedded 'javascript' engine is not available in java. Do you use the SUN/Oracle Java Runtime ? at htsjdk.samtools.filter.AbstractJavascriptFilter.(AbstractJavascriptFilter.java:90) at htsjdk.samtools.filter.AbstractJavascriptFilter.(AbstractJavascriptFilter.java:65) at htsjdk.samtools.filter.JavascriptSamRecordFilter.(JavascriptSamRecordFilter.java:58) at htsjdk.samtools.filter.JavascriptSamRecordFilterTest.testJavascriptFilters(JavascriptSamRecordFilterTest.java:58)

Gradle suite > Gradle test > htsjdk.samtools.filter.JavascriptSamRecordFilterTest.testJavascriptFilters[1](unsorted.sam, samFilter02.js, 10) FAILED htsjdk.samtools.util.RuntimeScriptException: The embedded 'javascript' engine is not available in java. Do you use the SUN/Oracle Java Runtime ? at htsjdk.samtools.filter.AbstractJavascriptFilter.(AbstractJavascriptFilter.java:90) at htsjdk.samtools.filter.AbstractJavascriptFilter.(AbstractJavascriptFilter.java:65) at htsjdk.samtools.filter.JavascriptSamRecordFilter.(JavascriptSamRecordFilter.java:58) at htsjdk.samtools.filter.JavascriptSamRecordFilterTest.testJavascriptFilters(JavascriptSamRecordFilterTest.java:58)

Gradle suite > Gradle test > htsjdk.variant.variantcontext.filter.JavascriptVariantFilterTest.testJavascriptFilters[0](ILLUMINA.wex.broad_phase2_baseline.20111114.both.exome.genotypes.1000.vcf, variantFi lter01.js, 61) FAILED htsjdk.samtools.util.RuntimeScriptException: The embedded 'javascript' engine is not available in java. Do you use the SUN/Oracle Java Runtime ? at htsjdk.samtools.filter.AbstractJavascriptFilter.(AbstractJavascriptFilter.java:90) at htsjdk.samtools.filter.AbstractJavascriptFilter.(AbstractJavascriptFilter.java:65) at htsjdk.variant.variantcontext.filter.JavascriptVariantFilter.(JavascriptVariantFilter.java:54) at htsjdk.variant.variantcontext.filter.JavascriptVariantFilterTest.testJavascriptFilters(JavascriptVariantFilterTest.java:57)

Gradle suite > Gradle test > htsjdk.variant.variantcontext.filter.JavascriptVariantFilterTest.testJavascriptFilters[1](ILLUMINA.wex.broad_phase2_baseline.20111114.both.exome.genotypes.1000.vcf, variantFi lter02.js, 38) FAILED htsjdk.samtools.util.RuntimeScriptException: The embedded 'javascript' engine is not available in java. Do you use the SUN/Oracle Java Runtime ? at htsjdk.samtools.filter.AbstractJavascriptFilter.(AbstractJavascriptFilter.java:90) at htsjdk.samtools.filter.AbstractJavascriptFilter.(AbstractJavascriptFilter.java:65) at htsjdk.variant.variantcontext.filter.JavascriptVariantFilter.(JavascriptVariantFilter.java:54) at htsjdk.variant.variantcontext.filter.JavascriptVariantFilterTest.testJavascriptFilters(JavascriptVariantFilterTest.java:57)

Also in (say) OpenJDK 11, the deprecation of Nashorn engine (https://openjdk.java.net/jeps/372) is already printed as a warning when running the build tests of htsjdk.

Do you see any way of coping with this in order to keep htsjdk working with OpenJDK 17?

Best, Pierre

lbergelson commented 1 year ago

@pgrt Currently htsjdk doesn't support java 17, we plan to do so in the relatively near future. There is a standalone replacement for the removed nashorn engine (https://github.com/openjdk/nashorn) which should be fairly straight forward to switch to.

pgrt commented 1 year ago

Hello,

Thanks a lot for your answer!

In Debian we don't have openjdk/nashorn packaged at the moment, I used rhino instead, I believe it can do the job...

Thanks again and have a good week, Pierre