[MSHARED-710] - JDK 9 / 10 Issue - Unknown constant pool type
o Added missing constants to the ConstantPoolParser.
diff --git a/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java b/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java
index 8e2b2d5..865df0b 100644
--- a/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java
+++ b/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/ConstantPoolParser.java
@@ -32,6 +32,12 @@
* ASM does not support.
*
* Adapted from http://stackoverflow.com/a/32278587/23691
+ *
+ * Constant pool types:
+ *
+ * @see https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.4
+ * @see https://docs.oracle.com/javase/specs/jvms/se10/html/jvms-4.html#jvms-4.4
+ *
*/
public class ConstantPoolParser
{
@@ -65,6 +71,10 @@
public static final byte CONSTANT_METHOD_TYPE = 16;
public static final byte CONSTANT_INVOKE_DYNAMIC = 18;
+
+ public static final byte CONSTANT_MODULE = 19;
+
+ public static final byte CONSTANT_PACKAGE = 20;
private static final int OXF0 = 0xf0;
@@ -93,7 +103,7 @@
switch ( tag )
{
default:
- throw new RuntimeException( "Unknown constant pool type" );
+ throw new RuntimeException( "Unknown constant pool type '" + tag + "'" );
case CONSTANT_UTF8:
stringConstants.put( ix, decodeString( buf ) );
continue;
@@ -131,6 +141,12 @@
buf.getChar();
buf.getChar();
break;
+ case CONSTANT_MODULE:
+ buf.getChar();
+ break;
+ case CONSTANT_PACKAGE:
+ buf.getChar();
+ break;
}
}
Set<String> result = new HashSet<String>();