diff src/main/java/org/monetdb/mcl/parser/StartOfHeaderParser.java @ 449:5ddfc0aa7f0e

Implemented fix for released monetdb-jdbc-3.0.jre8.jar and monetdb-mcl-1.19.jre8.jar when it is was run using java build 1.8.0_###. It would throw: java.lang.NoSuchMethodError: java.nio.CharBuffer.mark()Ljava/nio/CharBuffer;i at org.monetdb.mcl.parser.StartOfHeaderParser.getNextAsString(Unknown Source) at org.monetdb.jdbc.MonetConnection$ResponseList.executeQuery(Unknown Source) at org.monetdb.jdbc.MonetConnection$ResponseList.processQuery(Unknown Source) at org.monetdb.jdbc.MonetStatement.internalExecute(Unknown Source) at org.monetdb.jdbc.MonetStatement.execute(Unknown Source) The problem is caused by a change in java.nio.CharBuffer API (return types of methods mark() and reset() have changed from Buffer to CharBuffer) from Java 8 to Java 9+.
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Wed, 03 Mar 2021 17:29:53 +0100 (2021-03-03)
parents bf9f6b6ecf40
children 6aa38e8c0f2d
line wrap: on
line diff
--- a/src/main/java/org/monetdb/mcl/parser/StartOfHeaderParser.java
+++ b/src/main/java/org/monetdb/mcl/parser/StartOfHeaderParser.java
@@ -8,6 +8,7 @@
 
 package org.monetdb.mcl.parser;
 
+import java.nio.Buffer;	// needed as some CharBuffer overridden methods (mark() and reset()) return type changed between Java 8 (return Buffer) and 9 (or higher) (return CharBuffer)
 import java.nio.CharBuffer;
 
 /**
@@ -147,11 +148,11 @@ public final class StartOfHeaderParser {
 			throw new MCLParseException("unexpected end of string", soh.position() - 1);
 
 		int cnt = 0;
-		soh.mark();
+		((Buffer)soh).mark();
 		while (soh.hasRemaining() && soh.get() != ' ') {
 			cnt++;
 		}
-		soh.reset();
+		((Buffer)soh).reset();
 
 		return soh.subSequence(0, cnt).toString();
 	}