I was seeing an IllegalAccessError in some code using the xmlsec jar
when switching from JDK 1.4.2_04 to 1.4.2_05 so I pulled down the code
to compile it and this fails under JDK 1.4.2_05:
[EMAIL PROTECTED] xml-security-1_1_0]$ ant compile
Buildfile: build.xml
[taskdef] Could not load definitions from resource clovertasks. It
could not be found.
init:
[echo]
-------------------------------------------------------------------
[echo] --------- Apache-XML-Security-J v1.1.0 [2000-2004]
-----------
[echo]
-------------------------------------------------------------------
[echo] Building with Apache Ant version 1.6.1 compiled on February
12 2004
[echo] Java 1.4.2_05 located at C:\usr\java\j2sdk1.4.2_05\jre
[echo]
-------------------------------------------------------------------
do.check.libs.jce:
do.check.libs:
do.build.src:
env.mk.dirs:
do.check.bindist:
build.src:
[javac] Compiling 145 source files to
C:\usr\local\Java\XML\xml-security-1_1_0\build\classes
[javac]
C:\usr\local\Java\XML\xml-security-1_1_0\src\org\apache\xml\security
\Init.java:149: m_functions has private access in
org.apache.xpath.compiler.FunctionTable
[javac] for (int i = 0; i <
FunctionTable.m_functions.length; i++) {
[javac] ^
[javac]
C:\usr\local\Java\XML\xml-security-1_1_0\src\org\apache\xml\security
\Init.java:150: m_functions has private access in
org.apache.xpath.compiler.FunctionTable
[javac] FuncLoader loader =
FunctionTable.m_functions[i];
[javac] ^
[javac]
C:\usr\local\Java\XML\xml-security-1_1_0\src\org\apache\xml\security
\Init.java:156: m_functions has private access in
org.apache.xpath.compiler.FunctionTable
[javac] FunctionTable.m_functions[i] =
funcHereLoader;
[javac] ^
[javac] 3 errors
The problem is an incompatible accessibility change in the
FunctionTable.m_functions
member from public to private between 1.4.2_05 and 1.4.2_04:
[EMAIL PROTECTED] xml-security-1_1_0]$
/usr/java/j2sdk1.4.2_05/bin/javap -pr
ivate org.apache.xpath.compiler.FunctionTable
Compiled from "FunctionTable.java"
public class org.apache.xpath.compiler.FunctionTable extends
java.lang.Object{
public static final int FUNC_CURRENT;
public static final int FUNC_LAST;
public static final int FUNC_POSITION;
public static final int FUNC_COUNT;
public static final int FUNC_ID;
public static final int FUNC_KEY;
public static final int FUNC_LOCAL_PART;
public static final int FUNC_NAMESPACE;
public static final int FUNC_QNAME;
public static final int FUNC_GENERATE_ID;
public static final int FUNC_NOT;
public static final int FUNC_TRUE;
public static final int FUNC_FALSE;
public static final int FUNC_BOOLEAN;
public static final int FUNC_NUMBER;
public static final int FUNC_FLOOR;
public static final int FUNC_CEILING;
public static final int FUNC_ROUND;
public static final int FUNC_SUM;
public static final int FUNC_STRING;
public static final int FUNC_STARTS_WITH;
public static final int FUNC_CONTAINS;
public static final int FUNC_SUBSTRING_BEFORE;
public static final int FUNC_SUBSTRING_AFTER;
public static final int FUNC_NORMALIZE_SPACE;
public static final int FUNC_TRANSLATE;
public static final int FUNC_CONCAT;
public static final int FUNC_SUBSTRING;
public static final int FUNC_STRING_LENGTH;
public static final int FUNC_SYSTEM_PROPERTY;
public static final int FUNC_LANG;
public static final int FUNC_EXT_FUNCTION_AVAILABLE;
public static final int FUNC_EXT_ELEM_AVAILABLE;
public static final int FUNC_UNPARSED_ENTITY_URI;
public static final int FUNC_DOCLOCATION;
private static org.apache.xpath.compiler.FuncLoader[] m_functions;
private static final int NUM_BUILT_IN_FUNCS;
private static final int NUM_ALLOWABLE_ADDINS;
static int m_funcNextFreeIndex;
static {};
public org.apache.xpath.compiler.FunctionTable();
static java.lang.String getFunctionName(int);
public static void installFunction(org.apache.xpath.Expression,int);
public static org.apache.xpath.functions.Function getFunction(int);
throws javax/xml/transform/TransformerException
public static int
installFunction(java.lang.String,org.apache.xpath.Expression);
}
[EMAIL PROTECTED] xml-security-1_1_0]$
/usr/java/j2sdk1.4.2_04/bin/javap -pr
ivate org.apache.xpath.compiler.FunctionTable
Compiled from "FunctionTable.java"
public class org.apache.xpath.compiler.FunctionTable extends
java.lang.Object{
public static final int FUNC_CURRENT;
public static final int FUNC_LAST;
public static final int FUNC_POSITION;
public static final int FUNC_COUNT;
public static final int FUNC_ID;
public static final int FUNC_KEY;
public static final int FUNC_LOCAL_PART;
public static final int FUNC_NAMESPACE;
public static final int FUNC_QNAME;
public static final int FUNC_GENERATE_ID;
public static final int FUNC_NOT;
public static final int FUNC_TRUE;
public static final int FUNC_FALSE;
public static final int FUNC_BOOLEAN;
public static final int FUNC_NUMBER;
public static final int FUNC_FLOOR;
public static final int FUNC_CEILING;
public static final int FUNC_ROUND;
public static final int FUNC_SUM;
public static final int FUNC_STRING;
public static final int FUNC_STARTS_WITH;
public static final int FUNC_CONTAINS;
public static final int FUNC_SUBSTRING_BEFORE;
public static final int FUNC_SUBSTRING_AFTER;
public static final int FUNC_NORMALIZE_SPACE;
public static final int FUNC_TRANSLATE;
public static final int FUNC_CONCAT;
public static final int FUNC_SUBSTRING;
public static final int FUNC_STRING_LENGTH;
public static final int FUNC_SYSTEM_PROPERTY;
public static final int FUNC_LANG;
public static final int FUNC_EXT_FUNCTION_AVAILABLE;
public static final int FUNC_EXT_ELEM_AVAILABLE;
public static final int FUNC_UNPARSED_ENTITY_URI;
public static final int FUNC_DOCLOCATION;
public static org.apache.xpath.compiler.FuncLoader[] m_functions;
private static final int NUM_BUILT_IN_FUNCS;
private static final int NUM_ALLOWABLE_ADDINS;
static int m_funcNextFreeIndex;
public org.apache.xpath.compiler.FunctionTable();
public static org.apache.xpath.functions.Function getFunction(int);
throws javax/xml/transform/TransformerException
public static int
installFunction(java.lang.String,org.apache.xpath.Expression);
public static void installFunction(org.apache.xpath.Expression,int);
static {};
}