Running Mauve with Java 10

They short answer is you can’t (currently) run the totally awesome Mauve with Java 10, but you can probably run Mauve anyway. Here’s how!

TL;DR

locate java | grep java$ | grep -w bin
export JAVA_CMD=/usr/lib/jvm/java-8-openjdk-amd64/bin/java

If you get this error when you try to run the awesome Mauve from Aaron Darling’s lab, its because you have a too new version of Java!

$ mauve
[warning] /usr/bin/mauve: No JAVA_CMD set for run_java, falling back to JAVA_CMD = java
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "."
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:638)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at org.gel.mauve.gui.Mauve.hasRequiredJVM(Unknown Source)
at org.gel.mauve.gui.Mauve.init(Unknown Source)
at org.gel.mauve.gui.Mauve$2.run(Unknown Source)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue.access$600(EventQueue.java:97)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

To fix this, first, you need to find another version of Java. If you’re like me, your computer probably has many different versions of Java, because different software insist on installing their own version to ensure they can run. On a linux machine, you can typically use locate to find another version:

locate java | grep java$ | grep -w bin

This will list all your java executables. On my laptop I have 11 different versions of Java!!

Now you can tell Java which version to use by setting the JAVA_CMD variable:

export JAVA_CMD=/usr/lib/jvm/java-8-openjdk-amd64/bin/java

This one uses Java 8 from the openjdk installation I have. With this command, mauve will now start just fine.

Good luck!